/* Windows API source generated from resource file superzam.ctl */ #include #include #include #include #include #include #include #include #include #define OP_Ajouter 0 #define OP_Multiplier 1 #define sized(x) (x), (sizeof(x)) cmpstr (char *s1, char *s2) { int x, i1, i2, l1, l2, k; l1 = strlen (s1); l2 = strlen (s2); x = 0; for (i1=0; i1Registru (*pmsg); } /* PUSHBUTTON "&Serchu", ID_SERCHU, 21, 88, 42, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Serchu" ID= ID_SERCHU X= 21 Y= 88 W= 42 H= 13 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_SERCHU (TMessage *pmsg) { /* Add code here */ Wnd->Serchu (*pmsg); } /* PUSHBUTTON "&Forvishu", ID_FORVISHU, 260, 19, 33, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Forvishu" ID= ID_FORVISHU X= 260 Y= 19 W= 33 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_FORVISHU (TMessage *pmsg) { /* Add code here */ Wnd->Forvishu (*pmsg); } /* PUSHBUTTON "Sekva&nta", ID_SEKVANTA, 139, 87, 38, 16, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "Sekva&nta" ID= ID_SEKVANTA X= 139 Y= 87 W= 38 H= 16 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_SEKVANTA (TMessage *pmsg) { /* Add code here */ Wnd->Sekvanta (*pmsg); } /* PUSHBUTTON "An&tała", ID_ANTAUA, 78, 88, 46, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "An&tała" ID= ID_ANTAUA X= 78 Y= 88 W= 46 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_ANTAUA (TMessage *pmsg) { /* Add code here */ Wnd->Antaua (*pmsg); } /* LTEXT "Kategorio", -1, 7, 115, 37, 10, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "Kategorio" ID= -1 X= 7 Y= 115 W= 37 H= 10 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl20 (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TKATEG, 46, 113, 55, 14, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TKATEG X= 46 Y= 113 W= 55 H= 14 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TKATEG (TMessage *pmsg) { /* Add code here */ } /* LTEXT "Nombro", -1, 117, 116, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "Nombro" ID= -1 X= 117 Y= 116 W= 30 H= 9 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl22 (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TNOMBRO, 150, 112, 28, 15, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TNOMBRO X= 150 Y= 112 W= 28 H= 15 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TNOMBRO (TMessage *pmsg) { /* Add code here */ } /* LTEXT "Trovita demando", -1, 5, 135, 38, 17, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "Trovita demando" ID= -1 X= 5 Y= 135 W= 38 H= 17 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl24 (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TDEMANDO, 45, 132, 246, 17, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TDEMANDO X= 45 Y= 132 W= 246 H= 17 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TDEMANDO (TMessage *pmsg) { /* Add code here */ } /* LTEXT "Respondoj", -1, 5, 156, 36, 11, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "Respondoj" ID= -1 X= 5 Y= 156 W= 36 H= 11 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl26 (TMessage *pmsg) { /* Add code here */ } /* CONTROL "", ID_TRESP1BONA, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 46, 157, 13, 12 CONTROL ( "BUTTON") "" ID= ID_TRESP1BONA X= 46 Y= 157 W= 13 H= 12 STYLE= BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ void HandleCtlID_TRESP1BONA (TMessage *pmsg) { /* Add code here */ } /* CONTROL "", ID_TRESP2BONA, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 130, 159, 12, 12 CONTROL ( "BUTTON") "" ID= ID_TRESP2BONA X= 130 Y= 159 W= 12 H= 12 STYLE= BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ void HandleCtlID_TRESP2BONA (TMessage *pmsg) { /* Add code here */ } /* CONTROL "", ID_TRESP3BONA, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 210, 158, 12, 16 CONTROL ( "BUTTON") "" ID= ID_TRESP3BONA X= 210 Y= 158 W= 12 H= 16 STYLE= BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ void HandleCtlID_TRESP3BONA (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TRESPONDO1, 59, 156, 64, 16, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TRESPONDO1 X= 59 Y= 156 W= 64 H= 16 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TRESPONDO1 (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TRESPONDO2, 142, 157, 64, 16, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TRESPONDO2 X= 142 Y= 157 W= 64 H= 16 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TRESPONDO2 (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_TRESPONDO3, 221, 157, 69, 17, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_TRESPONDO3 X= 221 Y= 157 W= 69 H= 17 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_TRESPONDO3 (TMessage *pmsg) { /* Add code here */ } /* LTEXT "ND NR", -1, 213, 85, 29, 8, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "ND NR" ID= -1 X= 213 Y= 85 W= 29 H= 8 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl33 (TMessage *pmsg) { /* Add code here */ } /* LTEXT "TD", -1, 195, 96, 16, 8, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "TD" ID= -1 X= 195 Y= 96 W= 16 H= 8 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl34 (TMessage *pmsg) { /* Add code here */ } /* LTEXT "TR", -1, 194, 110, 16, 8, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT ("STATIC") "TR" ID= -1 X= 194 Y= 110 W= 16 H= 8 STYLE= WS_CHILD | WS_VISIBLE | WS_GROUP */ void HandleCtl35 (TMessage *pmsg) { /* Add code here */ } /* PUSHBUTTON "&Legu", ID_LEGU, 160, 19, 24, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Legu" ID= ID_LEGU X= 160 Y= 19 W= 24 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_LEGU (TMessage *pmsg) { /* Add code here */ Wnd->Legu (*pmsg); } /* EDITTEXT ID_SNDTD, 210, 94, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_SNDTD X= 210 Y= 94 W= 16 H= 12 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_SNDTD (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_SNRTD, 228, 94, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_SNRTD X= 228 Y= 94 W= 16 H= 12 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_SNRTD (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_SNDTR, 210, 107, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_SNDTR X= 210 Y= 107 W= 16 H= 12 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_SNDTR (TMessage *pmsg) { /* Add code here */ } /* EDITTEXT ID_SNRTR, 228, 107, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_SNRTR X= 228 Y= 107 W= 16 H= 12 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_SNRTR (TMessage *pmsg) { /* Add code here */ } /* PUSHBUTTON "&Helpu", ID_HELPU, 258, 4, 33, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Helpu" ID= ID_HELPU X= 258 Y= 4 W= 33 H= 13 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_HELPU (TMessage *pmsg) { /* Add code here */ Wnd->Helpu (*pmsg); } /* PUSHBUTTON "&Kreu liston", ID_KREULISTON, 211, 3, 38, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Kreu liston" ID= ID_KREULISTON X= 211 Y= 3 W= 38 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_KREULISTON (TMessage *pmsg) { /* Add code here */ Wnd->KreuListon (*pmsg); } /* PUSHBUTTON "Legu l&iston", ID_LEGULISTON, 168, 3, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "Legu l&iston" ID= ID_LEGULISTON X= 168 Y= 3 W= 40 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_LEGULISTON (TMessage *pmsg) { /* Add code here */ Wnd->LeguListon (*pmsg); } /* EDITTEXT ID_DISKSTOKEJO, 48, 2, 80, 15, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP EDITTEXT ("EDIT") "" ID=ID_DISKSTOKEJO X= 48 Y= 2 W= 80 H= 15 STYLE= ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL */ void HandleCtlID_DISKSTOKEJO (TMessage *pmsg) { /* Add code here */ } /* PUSHBUTTON "Shan&gu", ID_SHANGHU, 132, 3, 32, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "Shan&gu" ID= ID_SHANGHU X= 132 Y= 3 W= 32 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_SHANGHU (TMessage *pmsg) { /* Add code here */ Wnd->Shanghu (*pmsg); } /* CONTROL "Am.fv.", ID_AUTOFORVISHO, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 223, 20, 30, 12 CONTROL ( "BUTTON") "Am.fv." ID= ID_AUTOFORVISHO X= 223 Y= 20 W= 30 H= 12 STYLE= BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ void HandleCtlID_AUTOFORVISHO (TMessage *pmsg) { /* Add code here */ } /* PUSHBUTTON "List&o", ID_LISTO, 254, 89, 24, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "List&o" ID= ID_LISTO X= 254 Y= 89 W= 24 H= 15 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlID_LISTO (TMessage *pmsg) { /* Add code here */ Wnd->Listo (*pmsg); } LRESULT CALLBACK WndProc (HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { int nCtl; struct TMessage msg; msg.Receiver = hWnd; msg.Message = Message; msg.WParam = wParam; msg.LParam = lParam; msg.Result = 0; switch (Message) { case WM_CREATE: Wnd->HWindow = hWnd; /* create control objects hCtlObj[i] with CreateWindow */ for (nCtl=1; nCtl<=NCTL; nCtl++) { hCtlObj[nCtl] = CreateWindow (Res[nCtl].ctlclass, Res[nCtl].caption, Res[nCtl].param_int[P_STYLE], Res[nCtl].param_int[P_X]*2, Res[nCtl].param_int[P_Y]*3/2, Res[nCtl].param_int[P_W]*2, Res[nCtl].param_int[P_H]*3/2, hWnd, COMMAND0+nCtl, hInst, NULL); } Focus = 1; SetFocus (hCtlObj[Focus]); InitWnd (); break; case WM_CLOSE: for (nCtl=1; nCtl<=NCTL; nCtl++) DestroyWindow (hCtlObj[nCtl]); return DefWindowProc(hWnd, Message, wParam, lParam); case WM_SIZE: for (nCtl=1; nCtl<=NCTL; nCtl++) { MoveWindow (hCtlObj[nCtl], Res[nCtl].param_int[P_X]*LOWORD(lParam)/(Wid), Res[nCtl].param_int[P_Y]*HIWORD(lParam)/(Hei), Res[nCtl].param_int[P_W]*LOWORD(lParam)/(Wid), Res[nCtl].param_int[P_H]*HIWORD(lParam)/(Hei), TRUE); } break; case WM_COMMAND: switch (wParam) { /* case COMMAND0+i: HandleCtli(); break; */ case COMMAND0+1: HandleCtl1 (&msg); break; case COMMAND0+2: HandleCtlID_SUMO (&msg); break; case COMMAND0+3: HandleCtlID_KATEG (&msg); break; case COMMAND0+4: HandleCtl4 (&msg); break; case COMMAND0+5: HandleCtlID_NOMBRO (&msg); break; case COMMAND0+6: HandleCtl6 (&msg); break; case COMMAND0+7: HandleCtlID_DEMANDO (&msg); break; case COMMAND0+8: HandleCtl8 (&msg); break; case COMMAND0+9: HandleCtlID_RESP1BONA (&msg); break; case COMMAND0+10: HandleCtlID_RESP2BONA (&msg); break; case COMMAND0+11: HandleCtlID_RESP3BONA (&msg); break; case COMMAND0+12: HandleCtlID_RESPONDO1 (&msg); break; case COMMAND0+13: HandleCtlID_RESPONDO2 (&msg); break; case COMMAND0+14: HandleCtlID_RESPONDO3 (&msg); break; case COMMAND0+15: HandleCtlID_REGISTRU (&msg); break; case COMMAND0+16: HandleCtlID_SERCHU (&msg); break; case COMMAND0+17: HandleCtlID_FORVISHU (&msg); break; case COMMAND0+18: HandleCtlID_SEKVANTA (&msg); break; case COMMAND0+19: HandleCtlID_ANTAUA (&msg); break; case COMMAND0+20: HandleCtl20 (&msg); break; case COMMAND0+21: HandleCtlID_TKATEG (&msg); break; case COMMAND0+22: HandleCtl22 (&msg); break; case COMMAND0+23: HandleCtlID_TNOMBRO (&msg); break; case COMMAND0+24: HandleCtl24 (&msg); break; case COMMAND0+25: HandleCtlID_TDEMANDO (&msg); break; case COMMAND0+26: HandleCtl26 (&msg); break; case COMMAND0+27: HandleCtlID_TRESP1BONA (&msg); break; case COMMAND0+28: HandleCtlID_TRESP2BONA (&msg); break; case COMMAND0+29: HandleCtlID_TRESP3BONA (&msg); break; case COMMAND0+30: HandleCtlID_TRESPONDO1 (&msg); break; case COMMAND0+31: HandleCtlID_TRESPONDO2 (&msg); break; case COMMAND0+32: HandleCtlID_TRESPONDO3 (&msg); break; case COMMAND0+33: HandleCtl33 (&msg); break; case COMMAND0+34: HandleCtl34 (&msg); break; case COMMAND0+35: HandleCtl35 (&msg); break; case COMMAND0+36: HandleCtlID_LEGU (&msg); break; case COMMAND0+37: HandleCtlID_SNDTD (&msg); break; case COMMAND0+38: HandleCtlID_SNRTD (&msg); break; case COMMAND0+39: HandleCtlID_SNDTR (&msg); break; case COMMAND0+40: HandleCtlID_SNRTR (&msg); break; case COMMAND0+41: HandleCtlID_HELPU (&msg); break; case COMMAND0+42: HandleCtlID_KREULISTON (&msg); break; case COMMAND0+43: HandleCtlID_LEGULISTON (&msg); break; case COMMAND0+44: HandleCtlID_DISKSTOKEJO (&msg); break; case COMMAND0+45: HandleCtlID_SHANGHU (&msg); break; case COMMAND0+46: HandleCtlID_AUTOFORVISHO (&msg); break; case COMMAND0+47: HandleCtlID_LISTO (&msg); break; } break; default: return DefWindowProc(hWnd, Message, wParam, lParam); } return NULL; } void InitWnd (void) { /* Add code here */ /* SetDlgItemText (HWindow, ID_DISKSTOKEJO, "C:\\TRIVIAL"); */ /* SendMessage (hCtlObj[ID_DISKSTOKEJO-COMMAND0], WM_SETTEXT, 0, (LPARAM) (LPCSTR) "C:\\TRIV"); */ SendMessage (hCtlId(ID_DISKSTOKEJO), WM_SETTEXT, 0, (LPARAM) (LPCSTR) "C:\\SUPERZAM"); SendMessage (hCtlId(ID_SNDTD), WM_SETTEXT, 0, (LPARAM) (LPCSTR) "1"); SendMessage (hCtlId(ID_SNDTR), WM_SETTEXT, 0, (LPARAM) (LPCSTR) "1"); SendMessage (hCtlId(ID_SNRTD), WM_SETTEXT, 0, (LPARAM) (LPCSTR) "1"); SendMessage (hCtlId(ID_SNRTR), WM_SETTEXT, 0, (LPARAM) (LPCSTR) "1"); SendMessage (hCtlId(ID_AUTOFORVISHO), BM_SETCHECK, 1, 0); Wnd->Malfermu (); /* MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } */ } #define GetDlgItemText RedefGetDlgItemText int GetDlgItemText (HWND hw, int id, LPSTR s, int n) { SendMessage (hCtlId(id), WM_GETTEXT, n, (LPARAM)s); } #define SetDlgItemText RedefSetDlgItemText int SetDlgItemText (HWND hw, int id, LPSTR s) { SendMessage (hCtlId(id), WM_SETTEXT, 0, (LPARAM)s); } #define IsDlgButtonChecked RedefIsDlgButtonChecked int IsDlgButtonChecked (HWND hw, int id) { return SendMessage (hCtlId(id), BM_GETCHECK, 0, 0); } #define CheckDlgButton RedefCheckDlgButton int CheckDlgButton (HWND hw, int id, int state) { return SendMessage (hCtlId(id), BM_SETCHECK, state, 0); } int TTrivialDialog::Malfermu () { /* #define FILENAME "C:\\TRIVIAL.DAT" */ char FILENAME[200]; char diskstokejo[120]; GetDlgItemText (HWindow, ID_DISKSTOKEJO, sized(diskstokejo)); sprintf (FILENAME, "%s%s", diskstokejo, ".DAT"); #ifdef STDIO FILE *f1; f1 = fopen (FILENAME, "r+b"); printf ("\nopen -> %d\n", f1); if (f1 != NULL) { fclose (f); f = f1; return 0; } else { f1 = fopen (FILENAME, "wb"); fclose (f1); f1 = fopen (FILENAME, "r+b"); if (f1 == NULL) /* perror ("fopen"); */ { char teksto[200]; sprintf (teksto, "Mi ne povas malfermi %s\n%s", FILENAME, sys_errlist[errno]); MessageBox (HWindow, teksto, "Problemo", MB_OK); } return errno; } #else int fd1; fd1 = open (FILENAME, O_CREAT | O_RDWR | O_BINARY, S_IFREG | S_IREAD | S_IWRITE); if (fd1 != -1) { close (fd); fd = fd1; return 0; } else { char teksto[200]; sprintf (teksto, "Mi ne povas malfermi %s\n%s", FILENAME, sys_errlist[errno]); MessageBox (HWindow, teksto, "Problemo", MB_OK); return errno; } #endif } void TTrivialDialog::Shanghu (RTMessage Msg) { /* #ifdef STDIO fclose (f); #else close (fd); #endif */ Malfermu (); } /* #define HELPTEKSTO "Ne farita, pardonu..." */ #define HELPTEKSTO "\ Tajpu la kategorion de la registrota demando en la supra fako \"Kategorio\" \ kaj ghian tekston en la fako \"Nova demando\". Tajpu la respondojn kaj \ selektu la bonan klikante la maldekstran rondeton. \ Por registri la demandon kliku la butonon \"Registru\".\n\ Se vi volas vidi se similaj demandoj jam estas registritaj, kliku la \ butonon \"Serchu\". Jen aperas malsupre la pli similan demandon. \ Por vidi la aliajn en malpliighanta simileco ordo, kliku \"Sekvanta\".\n\ Por serchi demandojn enhavantaj vorton, tajpu la vorton en la fako\ \"Nova demando\" kaj kliku \"Serchu\".\n\ Se vi volas modifi demandon, tajpu en la supraj fakoj ghian kategorion kaj nombron kaj \ kliku \"Legu\". Modifu la tekston kaj kliku \"Registru\".\n\ Por krei liston de la registritaj demandoj kliku \"Kreu liston\". Ghi estas kreata \ en %s.LIS kaj ghin povas legi aliaj programoj." void TTrivialDialog::Helpu (RTMessage Msg) { char teksto[2000]; char diskstokejo[120]; GetDlgItemText (HWindow, ID_DISKSTOKEJO, sized(diskstokejo)); sprintf (teksto, HELPTEKSTO, diskstokejo); MessageBox (HWindow, teksto, "Helpo", MB_OK); } void TTrivialDialog::Forvishu (RTMessage Msg) { int i; SetDlgItemText (HWindow, ID_KATEG, ""); SetDlgItemText (HWindow, ID_NOMBRO, ""); SetDlgItemText (HWindow, ID_DEMANDO, ""); for (i=0; i= nd) nd = r1.Nombro + 1; } } } void TTrivialDialog::Legu (RTMessage Msg) { int status, i; PleniguRegistreron (); status = SerchuRegistreron (1); if (!status) { SetDlgItemText (HWindow, ID_DEMANDO, ""); for (i=0; iNombro == r1.Nombro && !strcmp (r->Kateg, r1.Kateg)) { /*if (legu) { */ memcpy (r, &r1, sizeof(*r)); /*VidebliguDemandon (); } */ return 1; } } return 0; } void TTrivialDialog::PleniguRegistreron () { char buf[120]; int i; GetDlgItemText (HWindow, ID_KATEG, sized(r.Kateg)); GetDlgItemText (HWindow, ID_NOMBRO, sized(buf)); r.Nombro = atoi (buf); GetDlgItemText (HWindow, ID_DEMANDO, sized(r.Demando)); for (i=0; i= simil[i].sim) { for (j=N_SIMIL-2; j>=i; j--) { memcpy (simil+j+1, simil+j, sizeof(simil[j])); } simil[i].sim = sim; #ifdef SIMIL_MEM memcpy (&(simil[i].r), &r1, sizeof(struct registrero)); #else strcpy (simil[i].r.Kateg, r1.Kateg); simil[i].r.Nombro = r1.Nombro; #endif break; } } } } void TTrivialDialog::VidebliguTrovitanDemandon () { char buf[120]; int i; struct registrero r1; int status; /* GetDlgItemText (HWindow, ID_KATEG, sized(r.Kateg)); */ SetDlgItemText (HWindow, ID_TKATEG, simil[vs].r.Kateg); /* GetDlgItemText (HWindow, ID_NOMBRO, sized(buf)); r.Nombro = atoi (buf); */ sprintf (buf, "%d", simil[vs].r.Nombro); SetDlgItemText (HWindow, ID_TNOMBRO, buf); #ifndef SIMIL_MEM strcpy (r1.Kateg, simil[vs].r.Kateg); r1.Nombro = simil[vs].r.Nombro; status = LeguRegistreron (&r1); if (status) { #endif SetDlgItemText (HWindow, ID_TDEMANDO, #ifdef SIMIL_MEM simil[vs].r #else r1 #endif .Demando); for (i=0; i 0) { vs--; VidebliguTrovitanDemandon (); } } void TTrivialDialog::Sekvanta (RTMessage Msg) { if (vs < N_SIMIL-1 && simil[vs].sim > 0) { vs++; VidebliguTrovitanDemandon (); } } #define ID_LISTOCB 101 #define ID_MONTRU 102 #define ID_FERMU 103 class TListoDialog : public TDialog { public: TAppliWindow *AppliWnd; PTComboBox Listo; TListoDialog (PTWindowsObject parent, LPSTR name) : TDialog (parent, name) { AppliWnd = (TAppliWindow *)parent; } virtual void TListoDialog::WMInitDialog (RTMessage Msg) { #ifdef SIMIL_MEM SendMessage (Listo->HWindow, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) (AppliWnd->simil[0].r.Demando)); #endif } virtual void Montru (RTMessage Msg) = [ID_FIRST + ID_MONTRU] { } virtual void Fermu (RTMessage Msg) = [ID_FIRST + ID_FERMU] { EndDialog (HWindow, 0); } }; HWND hWndListo; HWND hCtlObjListo[NCTL]; int FocusListo; static char szAppNameListo[] = "Listo"; #define hCtlIdListo(id) (hCtlObjListo[(id)-COMMAND0]) #define WidListo (276) #define HeiListo (169) struct resource_item ResListo[NCTL]; InitResListo () { /* COMBOBOX ID_LIST, 11, 11, 255, 132, CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP COMBOBOX () "" ID=ID_LIST X= 11 Y= 11 W= 255 H= 132 STYLE= CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ strcpy (ResListo[1].name, "LISTBOX"); strcpy (ResListo[1].ctlclass, "LISTBOX"); strcpy (ResListo[1].caption, ""); ResListo[1].param_int[1] = 11; ResListo[1].param_int[2] = 11; ResListo[1].param_int[3] = 255; ResListo[1].param_int[4] = 132; /* ResListo[1].param_int[5] = CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP; */ ResListo[1].param_int[5] = LBS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL; /* PUSHBUTTON "&Montru slipon", ID_MONTRU, 16, 144, 76, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Montru slipon" ID= ID_MONTRU X= 16 Y= 144 W= 76 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ strcpy (ResListo[2].name, "PUSHBUTTON"); strcpy (ResListo[2].ctlclass, "BUTTON"); strcpy (ResListo[2].caption, "&Montru slipon"); ResListo[2].param_int[1] = 16; ResListo[2].param_int[2] = 144; ResListo[2].param_int[3] = 76; ResListo[2].param_int[4] = 14; ResListo[2].param_int[5] = WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON; /* PUSHBUTTON "&Fermu", ID_FERMU, 107, 144, 51, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Fermu" ID= ID_FERMU X= 107 Y= 144 W= 51 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ strcpy (ResListo[3].name, "PUSHBUTTON"); strcpy (ResListo[3].ctlclass, "BUTTON"); strcpy (ResListo[3].caption, "&Fermu"); ResListo[3].param_int[1] = 107; ResListo[3].param_int[2] = 144; ResListo[3].param_int[3] = 51; ResListo[3].param_int[4] = 14; ResListo[3].param_int[5] = WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON; #define NCTLListo 3 return 0; } #define ID_LIST (COMMAND0 + 1) #define ID_MONTRU (COMMAND0 + 2) #define ID_FERMU (COMMAND0 + 3) #define HLISTO void InitWndListo (void); MontruSlipon (struct registrero *r, HWND hw) { char buf[1000]; sprintf (buf, " Kategorio %s Nombro %d\n\n %s\n\n\n a) %s\n\n b) %s\n\n c) %s\n\nBona respondo: %c\n", r->Kateg, r->Nombro, r->Demando, r->Respondo[0], r->Respondo[1], r->Respondo[2], 'a'+r->BonaResp); MessageBox (hw, buf, "Slipo", MB_OK); } class TAppliWindowListo : public TWindow { public: /* declare control objects PT... */ /* PTButton Button1; */ PTListBox Listo; PTWindowsObject pWndCtlObj[NCTL]; HWND hWndCtlObj[NCTL]; TAppliWindowListo (PTWindowsObject parent, LPSTR title) : TWindow (parent, title) { EnableKBHandler (); /* create control objects PT... with new T... */ /* Button1 = new TButton (this, 101, "&Test 1", 50, 80, 40, 20, FALSE); */ /* hCtlObjListo[1] = CreateWindow ("COMBOBOX", "", CBS_SIMPLE | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 11*2, 11*3/2, 255*2, 132*3/2, hWnd, COMMAND0+1, hInst, NULL); */ #ifndef HLISTO /* Listo = new TComboBox (this, 101, 11*2, 11*3/2, 255*2, 132*3/2, CBS_SIMPLE | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 1000); */ Listo = new TListBox (this, 101, 11*2, 11*3/2, 255*2, 132*3/2); Listo->Attr.Style &= ~LBS_SORT; #endif } LPSTR GetClassName () { return szAppNameListo; } virtual BOOL Create () { BOOL status; status = TWindow::Create (); hWndListo = HWindow; /* create objects hWndCtlObj[i] with CreateWindow */ return status; } virtual void SetupWindow () { int status; char mes[200]; int i; char line[300]; TWindow::SetupWindow (); #if 0 #ifdef HLISTO status = SendMessage (/*Listo->HWindow*/ hCtlId(ID_LIST), CB_ADDSTRING, 0, (LPARAM) (LPCSTR) (/*Appli*/Wnd->simil[0].r.Demando)); sprintf (mes, "%d %d %d", status, CB_ERR, CB_ERRSPACE); MessageBox (hWndListo, mes, "trace (w)", MB_OK); #else Listo->AddString (Wnd->simil[0].r.Demando); #endif #endif for (i=0; isimil[i].sim>0; i++) { #ifndef SIMIL_MEM struct registrero r1; memset (&r1, 0, sizeof(r1)); strcpy (r1.Kateg, Wnd->simil[i].r.Kateg); r1.Nombro = Wnd->simil[i].r.Nombro; status = Wnd->LeguRegistreron (&r1); #endif sprintf (line, "%s %d %s %ca)%s %cb)%s %cc)%s", Wnd->simil[i].r.Kateg, Wnd->simil[i].r.Nombro, #ifdef SIMIL_MEM Wnd->simil[i].r.Demando, Wnd->simil[i].r.BonaResp==0?'*':' ', Wnd->simil[i].r.Respondo[0], Wnd->simil[i].r.BonaResp==1?'*':' ', Wnd->simil[i].r.Respondo[1], Wnd->simil[i].r.BonaResp==2?'*':' ', Wnd->simil[i].r.Respondo[2] #else r1.Demando, r1.BonaResp==0?'*':' ', r1.Respondo[0], r1.BonaResp==1?'*':' ', r1.Respondo[1], r1.BonaResp==2?'*':' ', r1.Respondo[2] #endif ); #ifdef HLISTO status = SendMessage (/*Listo->HWindow*/ hCtlIdListo(ID_LIST), LB_ADDSTRING, 0, (LPARAM) (LPCSTR) line); #else Listo->AddString (line); #endif } } /* void HandleWndCtli (RTMessage Msg) = [ID_FIRST + COMMAND0 + i] { ... } */ void Montru (RTMessage Msg) = [ID_FIRST + ID_MONTRU] { #if 0 #ifdef HLISTO int status; char mes[200]; status = SendMessage (/*Listo->HWindow*/ hCtlId(ID_LIST), CB_ADDSTRING, 0, (LPARAM) (LPCSTR) (/*Appli*/Wnd->simil[0].r.Demando)); sprintf (mes, "%d %d %d", status, CB_ERR, CB_ERRSPACE); MessageBox (hWndListo, mes, "trace (w)", MB_OK); #else Listo->AddString (Wnd->simil[0].r.Demando); #endif #endif int i; char buf[1000]; #ifdef HLISTO i = SendMessage (/*Listo->HWindow*/ hCtlIdListo(ID_LIST), LB_GETCURSEL, 0, 0); #else i = Listo->GetSelIndex(); #endif #ifdef SIMIL_MEM MontruSlipon (&(Wnd->simil[i].r), HWindow); #else struct registrero r1; int status; memset (&r1, 0, sizeof(r1)); strcpy (r1.Kateg, Wnd->simil[i].r.Kateg); r1.Nombro = Wnd->simil[i].r.Nombro; status = Wnd->LeguRegistreron (&r1); MontruSlipon (&r1, HWindow); #endif } void List (RTMessage Msg) = [ID_FIRST + ID_LIST] { switch (Msg.LP.Hi) { case LBN_DBLCLK: Montru (Msg); break; } } void Fermu (RTMessage Msg) = [ID_FIRST + ID_FERMU] { DestroyWindow (hWndListo); this->TWindow::~TWindow(); SendMessage (hWndListo, WM_QUIT, 0, 0); } }; TAppliWindowListo *WndListo; /* COMBOBOX ID_LIST, 11, 11, 255, 132, CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP COMBOBOX () "" ID=ID_LIST X= 11 Y= 11 W= 255 H= 132 STYLE= CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ /* COMBOBOX ID_LIST, 11, 11, 255, 132, CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP COMBOBOX () "" ID=ID_LIST X= 11 Y= 11 W= 255 H= 132 STYLE= CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ void HandleCtlListoID_LIST (TMessage *pmsg) { /* Add code here */ WndListo->List (*pmsg); } /* PUSHBUTTON "&Montru slipon", ID_MONTRU, 16, 144, 76, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Montru slipon" ID= ID_MONTRU X= 16 Y= 144 W= 76 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlListoID_MONTRU (TMessage *pmsg) { /* Add code here */ WndListo->Montru (*pmsg); } /* PUSHBUTTON "&Fermu", ID_FERMU, 107, 144, 51, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Fermu" ID= ID_FERMU X= 107 Y= 144 W= 51 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ void HandleCtlListoID_FERMU (TMessage *pmsg) { /* Add code here */ WndListo->Fermu (*pmsg); } /* () "" ID=000 X=000 Y=000 W=000 H=000 STYLE=000 */ void HandleCtlListo4 () { /* Add code here */ } LRESULT CALLBACK WndProcListo (HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { int nCtl; struct TMessage msg; msg.Receiver = hWnd; msg.Message = Message; msg.WParam = wParam; msg.LParam = lParam; msg.Result = 0; switch (Message) { case WM_CREATE: WndListo->HWindow = hWndListo; /* create control objects hCtlObjListo[i] with CreateWindow */ for (nCtl=1; nCtl<=NCTLListo; nCtl++) { hCtlObjListo[nCtl] = CreateWindow (ResListo[nCtl].ctlclass, ResListo[nCtl].caption, ResListo[nCtl].param_int[P_STYLE], ResListo[nCtl].param_int[P_X]*2, ResListo[nCtl].param_int[P_Y]*3/2, ResListo[nCtl].param_int[P_W]*2, ResListo[nCtl].param_int[P_H]*3/2, hWnd, COMMAND0+nCtl, hInst, NULL); } FocusListo = 1; SetFocus (hCtlObjListo[FocusListo]); #if 0 /* COMBOBOX ID_LIST, 11, 11, 255, 132, CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP COMBOBOX () "" ID=ID_LIST X= 11 Y= 11 W= 255 H= 132 STYLE= CBS_SIMPLE | WS_CHILD | WS_VISIBLE | WS_TABSTOP */ #ifdef HLISTO hCtlObjListo[1] = CreateWindow ("COMBOBOX", "", CBS_SIMPLE | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 11*2, 11*3/2, 255*2, 132*3/2, hWnd, COMMAND0+1, hInst, NULL); #endif /* PUSHBUTTON "&Montru slipon", ID_MONTRU, 16, 144, 76, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Montru slipon" ID= ID_MONTRU X= 16 Y= 144 W= 76 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ hCtlObjListo[2] = CreateWindow ("BUTTON", "&Montru slipon", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 16*2, 144*3/2, 76*2, 14*3/2, hWnd, COMMAND0+2, hInst, NULL); /* PUSHBUTTON "&Fermu", ID_FERMU, 107, 144, 51, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON ("BUTTON") "&Fermu" ID= ID_FERMU X= 107 Y= 144 W= 51 H= 14 STYLE= WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON */ hCtlObjListo[3] = CreateWindow ("BUTTON", "&Fermu", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 107*2, 144*3/2, 51*2, 14*3/2, hWnd, COMMAND0+3, hInst, NULL); /* () "" ID=000 X=000 Y=000 W=000 H=000 STYLE=000 */ /* hCtlObjListo[4] = CreateWindow (, "", 000, 000*2, 000*3/2, 000*2, 000*3/2, hWnd, COMMAND0+4, hInst, NULL); */ #endif InitWndListo (); break; case WM_CLOSE: for (nCtl=1; nCtl<=NCTLListo; nCtl++) DestroyWindow (hCtlObjListo[nCtl]); return DefWindowProc(hWnd, Message, wParam, lParam); case WM_SIZE: for (nCtl=1; nCtl<=NCTLListo; nCtl++) { MoveWindow (hCtlObjListo[nCtl], ResListo[nCtl].param_int[P_X]*LOWORD(lParam)/(WidListo), ResListo[nCtl].param_int[P_Y]*HIWORD(lParam)/(HeiListo), ResListo[nCtl].param_int[P_W]*LOWORD(lParam)/(WidListo), ResListo[nCtl].param_int[P_H]*HIWORD(lParam)/(HeiListo), TRUE); } break; case WM_COMMAND: switch (wParam) { /* case COMMAND0+i: HandleCtlListoi(); break; */ case COMMAND0+1: HandleCtlListoID_LIST (&msg); break; case COMMAND0+2: HandleCtlListoID_MONTRU (&msg); break; case COMMAND0+3: HandleCtlListoID_FERMU (&msg); break; } break; default: return(DefWindowProc(hWnd, Message, wParam, lParam)); } return NULL; } void InitWndListo (void) { /* Add code here */ int status; char mes[200]; #if 0 #ifdef HLISTO status = SendMessage (hCtlId(ID_LIST), WM_SETREDRAW, TRUE, 0); status = SendMessage (/*Listo->HWindow*/ hCtlId(ID_LIST), CB_ADDSTRING, 0, (LPARAM) (LPCSTR) (/*Appli*/Wnd->simil[0].r.Demando)); sprintf (mes, "%d %d %d", status, CB_ERR, CB_ERRSPACE); MessageBox (hWndListo, mes, "trace", MB_OK); #else WndListo->Listo->AddString ("testo"/*Wnd->simil[0].r.Demando*/); #endif #endif WndListo->SetupWindow (); } class TAppliListo : public TApplication { public: TAppliListo (LPSTR AName, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) : TApplication (AName, hInstance, hPrevInstance, lpCmdLine, nCmdShow) { } virtual void InitMainWindow () { WndListo = new TAppliWindowListo (NULL, Name); MainWindow = WndListo; WndListo->Attr.W = 276*2; WndListo->Attr.H = 169*3/2+20; } }; HINSTANCE ghPrevInstance; LPSTR glpCmdLine; int gnCmdShow; int KBHandler (MSG *pmsg, HWND hWnd, int NbrCtl, struct resource_item *Res, HWND *hCtlObj, int *pFocus); void TTrivialDialog::Listo (RTMessage Msg) { /* GetApplication()->ExecDialog (new TListoDialog (this, "LISTO")); */ #if 0 TAppliListo Appli (szAppNameListo, hInst, ghPrevInstance, glpCmdLine, gnCmdShow); Appli.Run (); #else MSG msg; #define LWCAPTION "Listo" WndListo = new TAppliWindowListo (NULL, LWCAPTION); hWndListo = CreateWindow (szAppNameListo, LWCAPTION, WS_OVERLAPPEDWINDOW /*| WS_VSCROLL | WS_HSCROLL*/, CW_USEDEFAULT, CW_USEDEFAULT, (WidListo)*2, (HeiListo)*3/2+20, NULL, NULL, hInst, NULL); if (!hWndListo) return; ShowWindow (hWndListo, gnCmdShow); UpdateWindow (hWndListo); while (GetMessage(&msg, NULL, 0, 0)) { if (!KBHandler (&msg, hWndListo, NCTLListo, ResListo, hCtlObjListo, &FocusListo)) { TranslateMessage (&msg); DispatchMessage (&msg); } } #endif } int SpecificHandler (MSG *pmsg) { if (pmsg->message == WM_KEYDOWN) { switch (pmsg->wParam) { case VK_NEXT: Wnd->LeguSekvanta (1); return 1; case VK_PRIOR: Wnd->LeguSekvanta (-1); return 1; default: return 0; } } return 0; } #if 0 class TAppliWindow : public TWindow { public: /* declare control objects PT... */ /* PTButton Button1; */ PTWindowsObject pWndCtlObj[NCTL]; HWND hWndCtlObj[NCTL]; TAppliWindow (PTWindowsObject parent, LPSTR title) : TWindow (parent, title) { EnableKBHandler (); /* create control objects PT... with new T... */ /* Button1 = new TButton (this, 101, "&Test 1", 50, 80, 40, 20, FALSE); */ } LPSTR GetClassName () { return szAppName; } virtual BOOL Create () { BOOL status; status = TWindow::Create (); hWnd = HWindow; /* create objects hWndCtlObj[i] with CreateWindow */ return status; } /* void HandleWndCtli (RTMessage Msg) = [ID_FIRST + COMMAND0 + i] { ... } */ }; TAppliWindow *Wnd; #endif class TAppli : public TApplication { public: TAppli (LPSTR AName, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) : TApplication (AName, hInstance, hPrevInstance, lpCmdLine, nCmdShow) { } virtual void InitMainWindow () { Wnd = new TAppliWindow (NULL, Name); MainWindow = Wnd; Wnd->Attr.W = (Wid)*2; Wnd->Attr.H = (Hei)*3/2+20; } }; char CtlKey (char *s) { int i, l; l = strlen (s); for (i=0; imessage == WM_CHAR) { if (pmsg->wParam == '\t') { hw = GetFocus (); for (nCtl=1; nCtl<=NbrCtl; nCtl++) { if (hw == hCtlObj[nCtl]) *pFocus = nCtl; } PrevFocus = *pFocus; do { if (GetKeyState (VK_SHIFT) >= 0) { if (*pFocus < NbrCtl) (*pFocus)++; else *pFocus = 1; } else { if (*pFocus > 1) (*pFocus)--; else *pFocus = NbrCtl; } } while (!strcmp (Res[*pFocus].name, "LTEXT") && (*pFocus != PrevFocus)); SetFocus (hCtlObj[*pFocus]); return 1; } } if (pmsg->message == WM_SYSCHAR) { for (nCtl=1; nCtl<=NbrCtl; nCtl++) { if (toupper(CtlKey (Res[nCtl].caption)) == toupper(pmsg->wParam)) { *pFocus = nCtl; SetFocus (hCtlObj[*pFocus]); if (!strcmp (Res[nCtl].name, "PUSHBUTTON")) SendMessage (hWnd, WM_COMMAND, COMMAND0+nCtl, 0); return 1; } } } return 0; } int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wndclass; MSG msg; InitRes (); ghPrevInstance = hPrevInstance; glpCmdLine = lpCmdLine; gnCmdShow = nCmdShow; if (!hPrevInstance) { wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) return FALSE; } InitResListo (); if (!hPrevInstance) { wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProcListo; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppNameListo; if (!RegisterClass(&wndclass)) return FALSE; } #if 0 hInst = hInstance; TAppli Appli (szAppName, hInstance, hPrevInstance, lpCmdLine, nCmdShow); Appli.Run (); return Appli.Status; #else #define MWCAPTION "Administrado de demandaro" Wnd = new TAppliWindow (NULL, MWCAPTION); hWnd = CreateWindow (szAppName, MWCAPTION, WS_OVERLAPPEDWINDOW /*| WS_VSCROLL | WS_HSCROLL*/, CW_USEDEFAULT, CW_USEDEFAULT, (Wid)*2, (Hei)*3/2+20, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; /*Wnd->HWindow = hWnd;*/ ShowWindow (hWnd, nCmdShow); UpdateWindow (hWnd); while (GetMessage(&msg, NULL, 0, 0)) { if (!SpecificHandler (&msg)) { if (!KBHandler (&msg, hWnd, NCTL, Res, hCtlObj, &Focus)) { TranslateMessage (&msg); DispatchMessage (&msg); } } } return(msg.wParam); #endif }