Dopo aver introdotto il funzionamento base della programmazione in Windows con il Visual C/C++ affrontiamo oggi la costruzione di una semplice finestra con l’SDK ( Software Development Kit ) di Windows. Per prima cosa abbiamo detto che ogni applicazione Windows ha una funzione principale WinMain, questa si collega ad un’altra funzione che gestisce i messaggi, la Window Procedure, che si inserisce al momento della registrazione della classe di finestre. Vediamo il codice necessario alla costruzione di una semplice finestra:
LONG FAR PASCAL WindowProc(HWND, UINT, WPARAM, LPARAM); char szProgName[] = "Applicazione Corso"; int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPreInst, LPSTR lpszCmdLine, int CmdShow) { HWND hWnd; MSG msg; WNDCLASS wc; if (!hPreInst ) { wc.lpszClassName = szProgName; wc.hInstance = hInst; wc.lpfnWndProc = WindowProc; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = NULL; wc.lpszMenuName = NULL; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.style = CS_HREDRAW|CS_VREDRAW; wc.cbClsExtra = 0; wc.cbWndExtra = 0; if (!RegisterClass(&wc)) return FALSE; } hWnd = CreateWindow(szProgName, "Prima Finestra del Corso", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LONG FAR PASCAL WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
Questo è il codice necessario alla costruzione della finestra più semplice possibile, per la struttura delle varie funzioni vi rimando all’aiuto in linea dell’sdk. Vediamo i passi principali:
Nella prossima lezione vedremo come inserire una nostra icona ed un nostro menu nella finestra e quindi parleremo delle risorse di un’applicazione e di come vengano gestite. Come sempre vi ricordo di ricorrere al forum per qualsiasi domanda.
<< Lezione Precedente – Inizio Corso – Lezione Successiva >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→