- Atom
Membro Pro - Idade : 28
Posts : 1236
Créditos : 0
Respeito : 18
Sua primeira janela em c
Sáb 25 Jul 2009, 13:35
Vocês conseguiram fazer aquela janelinha estilo dos...sim! então vamos passar para o modelo do windows!
Codigo
Não se assuste com todo este código, mesmo porque vamos cansar de
vê-lo e, pode ter certeza, a gente acaba se acostumando. Observe que o
programa possui três funções: WinMain (linha 10), InitializaApp (linha
33) e a DialogFunc (linha 38). A InitializaApp não faz nada além de
retornar 1 - serve apenas de gancho se quisermos configurar alguma
coisa antes da caixa de diálogo ser mostrada. Vou tentar explicar em
detalhes as outras duas, a WinMain e a DialogFunc.
Codigo
- Código:
[list=1]
[*][font='Courier New'][color=#339933]#include <windows.h>[/color][/font]
[*][font='Courier New'][color=#339933]#include <windowsx.h>[/color][/font]
[*][font='Courier New'][color=#339933]#include <commctrl.h>[/color][/font]
[*][font='Courier New'][color=#339933]#include <string.h>[/color][/font]
[*][font='Courier New'][color=#339933]#include "testedlgres.h"[/color][/font]
[*]
[*][font='Courier New'][color=#993333]static[/color] BOOL CALLBACK DialogFunc[color=#66CC66]([/color][/font]
[*][font='Courier New'] HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam[color=#66CC66])[/color];[/font]
[*]
[*][font='Courier New'][color=#993333]int[/color] APIENTRY WinMain[color=#66CC66]([/color][/font]
[*][font='Courier New'] HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, [color=#993333]int[/color] nCmdShow[color=#66CC66])[/color][/font]
[*][font='Courier New'][color=#66CC66]{[/color][/font]
[*][font='Courier New'] WNDCLASS wc;[/font]
[*][font='Courier New'] INITCOMMONCONTROLSEX cc;[/font]
[*]
[*][font='Courier New'] memset[color=#66CC66]([/color]&wc,[color=#CC66CC]0[/color],[color=#993333]sizeof[/color][color=#66CC66]([/color]wc[color=#66CC66])[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] wc.[color=#202020]lpfnWndProc[/color] = DefDlgProc;[/font]
[*][font='Courier New'] wc.[color=#202020]cbWndExtra[/color] = DLGWINDOWEXTRA;[/font]
[*][font='Courier New'] wc.[color=#202020]hInstance[/color] = hinst;[/font]
[*][font='Courier New'] wc.[color=#202020]hCursor[/color] = LoadCursor[color=#66CC66]([/color][color=#000000][b]NULL[/b][/color], IDC_ARROW[color=#66CC66])[/color];[/font]
[*][font='Courier New'] wc.[color=#202020]hbrBackground[/color] = [color=#66CC66]([/color]HBRUSH[color=#66CC66])[/color] [color=#66CC66]([/color]COLOR_WINDOW + [color=#CC66CC]1[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] wc.[color=#202020]lpszClassName[/color] = [color=#FF0000]"testedlg"[/color];[/font]
[*][font='Courier New'] RegisterClass[color=#66CC66]([/color]&wc[color=#66CC66])[/color];[/font]
[*][font='Courier New'] memset[color=#66CC66]([/color]&cc,[color=#CC66CC]0[/color],[color=#993333]sizeof[/color][color=#66CC66]([/color]cc[color=#66CC66])[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] cc.[color=#202020]dwSize[/color] = [color=#993333]sizeof[/color][color=#66CC66]([/color]cc[color=#66CC66])[/color];[/font]
[*][font='Courier New'] cc.[color=#202020]dwICC[/color] = 0xffffffff;[/font]
[*][font='Courier New'] InitCommonControlsEx[color=#66CC66]([/color]&cc[color=#66CC66])[/color];[/font]
[*]
[*][font='Courier New'] [color=#B1B100]return[/color] DialogBox[color=#66CC66]([/color][/font]
[*][font='Courier New'] hinst, MAKEINTRESOURCE[color=#66CC66]([/color]IDD_MAINDIALOG[color=#66CC66])[/color], [color=#000000][b]NULL[/b][/color], [color=#66CC66]([/color]DLGPROC[color=#66CC66])[/color] DialogFunc[color=#66CC66])[/color];[/font]
[*][font='Courier New'][color=#66CC66]}[/color][/font]
[*]
[*][font='Courier New'][color=#993333]static[/color] [color=#993333]int[/color] InitializeApp[color=#66CC66]([/color]HWND hDlg,WPARAM wParam, LPARAM lParam[color=#66CC66])[/color][/font]
[*][font='Courier New'][color=#66CC66]{[/color][/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#CC66CC]1[/color];[/font]
[*][font='Courier New'][color=#66CC66]}[/color][/font]
[*]
[*][font='Courier New'][color=#993333]static[/color] BOOL CALLBACK DialogFunc[color=#66CC66]([/color][/font]
[*][font='Courier New'] HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam[color=#66CC66])[/color][/font]
[*][font='Courier New'][color=#66CC66]{[/color][/font]
[*][font='Courier New'] [color=#B1B100]switch[/color] [color=#66CC66]([/color]msg[color=#66CC66])[/color] [color=#66CC66]{[/color][/font]
[*][font='Courier New'] [color=#B1B100]case[/color] WM_INITDIALOG:[/font]
[*][font='Courier New'] InitializeApp[color=#66CC66]([/color]hwndDlg,wParam,lParam[color=#66CC66])[/color];[/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#000000][b]TRUE[/b][/color];[/font]
[*][font='Courier New'] [color=#B1B100]case[/color] WM_COMMAND:[/font]
[*][font='Courier New'] [color=#B1B100]switch[/color] [color=#66CC66]([/color]LOWORD[color=#66CC66]([/color]wParam[color=#66CC66])[/color][color=#66CC66])[/color] [color=#66CC66]{[/color][/font]
[*][font='Courier New'] [color=#B1B100]case[/color] IDOK:[/font]
[*][font='Courier New'] EndDialog[color=#66CC66]([/color]hwndDlg,[color=#CC66CC]1[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#CC66CC]1[/color];[/font]
[*][font='Courier New'] [color=#B1B100]case[/color] IDCANCEL:[/font]
[*][font='Courier New'] EndDialog[color=#66CC66]([/color]hwndDlg,[color=#CC66CC]0[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#CC66CC]1[/color];[/font]
[*][font='Courier New'] [color=#66CC66]}[/color][/font]
[*][font='Courier New'] [color=#000000][b]break[/b][/color];[/font]
[*][font='Courier New'] [color=#B1B100]case[/color] WM_CLOSE:[/font]
[*][font='Courier New'] EndDialog[color=#66CC66]([/color]hwndDlg,[color=#CC66CC]0[/color][color=#66CC66])[/color];[/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#000000][b]TRUE[/b][/color];[/font]
[*][font='Courier New'] [color=#66CC66]}[/color][/font]
[*][font='Courier New'] [color=#B1B100]return[/color] [color=#000000][b]FALSE[/b][/color];[/font]
[*][font='Courier New'][color=#66CC66]}[/color][/font]
[/list]
Não se assuste com todo este código, mesmo porque vamos cansar de
vê-lo e, pode ter certeza, a gente acaba se acostumando. Observe que o
programa possui três funções: WinMain (linha 10), InitializaApp (linha
33) e a DialogFunc (linha 38). A InitializaApp não faz nada além de
retornar 1 - serve apenas de gancho se quisermos configurar alguma
coisa antes da caixa de diálogo ser mostrada. Vou tentar explicar em
detalhes as outras duas, a WinMain e a DialogFunc.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|