/****************/ /* thello.cpp */ /****************/ // Ohjelma tyypillisten kontrollien testaamiseksi /vl-96 // Projektiin vain tämä tiedosto. #include #include #include #include #include #include // OWL:ssä ei voi käyttää helposti ikkunan ScrollBareja ja // itse tehtyjä ScrollBareja yhtäaikaa: //#define RULLAAVA_IKKUNA // Määrittele tämä sen mukaan kumman haluat #define MY_BUTTON 175 /* Nappulan tunniste */ #define MY_EDIT 176 /* Tekstikentän (Edit) tunniste */ #define MY_BAR 177 /* Oman likusäätimen tunniste */ #define MY_STATIC 178 /* 1. vakiotekstin tunniste = liun arvo */ #define MY_BARS 179 /* apuvakio seuraaville */ #define MY_SVER (MY_BARS+SB_VERT) /* 2. tekstikenän tunniste = pystyliun */ #define MY_SHOR (MY_BARS+SB_HORZ) /* 3. tekstikentän tunniste = vaakaliun*/ #define MIN_BAR 0 #define MAX_BAR 50 //------------------------------------------------------------------------------ class TIntLabel : public TStatic { // Oma luokka kokonaislukuikkunalle int value; public: TIntLabel(TWindow* parent, int id, int i, int x, int y, int w, int h, uint textLimit = 0, TModule* module = 0) : TStatic(parent,id,"0",x,y,w,h,textLimit,module) { Attr.Style |= SS_RIGHT; operator=(i); } int set(int i) { char s[20]; value = i; itoa(i,s,10); SetWindowText(s); return i; } int operator=(int i) { return set(i); } operator int() { return value; } int operator++() { set(value+1); return value; } int operator++(int) { int i=value; set(value+1); return i; } int operator+=(int i) { set(value+i); return value; } int operator-=(int i) { set(value-i); return value; } }; //------------------------------------------------------------------------------ class TMainWindow : public TFrameWindow { TButton *my_button; TIntLabel *my_value,*my_shor,*my_sver; TEdit *my_edit; TScrollBar *my_bar; int bx; public: TMainWindow(TWindow *Parent, LPCSTR ATitle) : TFrameWindow(Parent, ATitle) { #ifdef RULLAAVA_IKKUNA Attr.Style |= 1*WS_VSCROLL | 1*WS_HSCROLL; Scroller = new TScroller(this,1,1,100,100); #endif bx = 100; MoveWindow(50,50,300,300); my_button = new TButton(this,MY_BUTTON,"Windows Hello" , 10, 30,100, 30); my_value = new TIntLabel(this,MY_STATIC,0 , 40, 70, 40, 30); my_shor = new TIntLabel(this,MY_SHOR ,0 , 80, 70, 40, 30); my_sver = new TIntLabel(this,MY_SVER ,0 ,120, 70, 40, 30); my_edit = new TEdit(this,MY_EDIT,"Windows Hello" , 10,110,100, 40); my_bar = new TScrollBar(this,MY_BAR ,200, 10, 30,200,0); // my_bar->SetRange(MIN_BAR,MAX_BAR); // Tämä ei pure!!! // new TButton(this,MY_BUTTON+200,"Windows Hello" , bx+=30, bx,100, 30); } void SetupWindow() { TFrameWindow::SetupWindow(); new TButton(this,MY_BUTTON,"Windows Hello" , bx+=30, bx,100, 30); my_bar->SetRange(MIN_BAR,MAX_BAR); // Vasta täällä toimii!!! // my_bar->SetPageMagnitude(10); // Jostain syystä yläraja pienenee tällä? } void Paint(TDC &hdc,bool, TRect &) { hdc.TextOut(10,10,"Hello World!"); } void BNMyButtonClicked() { *my_value += 1; TButton *b = new TButton(this,MY_BUTTON+200,"Windows Hello" , bx+=30, bx,100, 30); b->Show(SW_SHOW); CreateChildren(); // HWND hCtrl = CreateWindow("Button","Windows Hello", // WS_BORDER |WS_CHILD | WS_VISIBLE , // 10,200,100,30,*this,(HMENU)MY_BUTTON,*GetModule(),NULL); } void ENMyEditChange() { *my_value += 1; } void ENMyEditKillFocus() { char s[100]; my_edit->GetWindowText(s,sizeof(s)); SetWindowText(s); } void EvMyBar(uint code) { *my_sver = my_bar->GetPosition(); } DECLARE_RESPONSE_TABLE(TMainWindow); }; DEFINE_RESPONSE_TABLE1(TMainWindow,TFrameWindow) EV_WM_PAINT, EV_BN_CLICKED(MY_BUTTON,BNMyButtonClicked), EV_EN_CHANGE(MY_EDIT,ENMyEditChange), EV_EN_KILLFOCUS(MY_EDIT,ENMyEditKillFocus), EV_CHILD_NOTIFY_ALL_CODES(MY_BAR, EvMyBar), END_RESPONSE_TABLE; //------------------------------------------------------------------------------ class TTHelloApp : public TApplication { public: TTHelloApp(const char far *name = 0) : TApplication(name) {}; void InitMainWindow() { MainWindow = new TMainWindow(NULL, Name); } }; //------------------------------------------------------------------------------ int OwlMain(int ,char far * []) { return TTHelloApp("Windows Hello").Run(); }