Bonjour a tous,
voila j'essaie de créé ma première application MDI, mais j'ai beaucoup de mal, surtout que je n'ai pas trouvé de tutorial sur le net, et que les quelques codes que j'ai vu ne m'ont pas trop aidé .
Bref j'ai donc ecrit ce code:
LRESULT CALLBACK ChildProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam)
{
switch(mes)
{
case WM_CREATE:
CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD|WS_VSCROLL|ES_MULTILINE|WS_VISIBLE|ES_AUTOVSCROLL|ES_WANTRETURN, 0, 0, 0, 0, hWnd, NULL, hInst, NULL);
ShowWindow(hWnd, SW_SHOWNORMAL);
SetFocus(hWnd);
return TRUE;
default:
return DefWindowProc(hWnd, mes, wParam, lParam);
}
}
// fonction de la fenetre
LRESULT CALLBACK MainProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam)
{
switch(mes)
{
// creation de la fenetre
case WM_CREATE:
// configuration fils
CLIENTCREATESTRUCT ccs;
ccs.hWindowMenu = NULL;
ccs.idFirstChild = 200;
clientHwnd = CreateWindowEx(0, "MDICLIENT", NULL, WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, (HMENU)NULL, hInst, (void*)&ccs);
// definition classe du fils
WNDCLASSEX clientWnd;
clientWnd.cbClsExtra = 0;
clientWnd.cbSize = sizeof(WNDCLASSEX);
clientWnd.cbWndExtra = 0;
clientWnd.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);
clientWnd.hCursor = LoadCursor(NULL, IDC_ARROW);
clientWnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);
clientWnd.hIconSm = clientWnd.hIcon;
clientWnd.hInstance = hInst;
clientWnd.lpfnWndProc = ChildProc;
clientWnd.lpszClassName = "Editor";
clientWnd.lpszMenuName = NULL;
clientWnd.style = CS_DBLCLKS|CS_PARENTDC;
RegisterClassEx(&clientWnd);
return TRUE;
// demande de fermeture application
case WM_CLOSE:
if(MessageBox(hWnd, "Etes-vous sur de vouloir quitter ?", "Quitter ?", MB_ICONINFORMATION|MB_YESNO) == IDYES)
PostQuitMessage(0);
return 0;
// selection item
case WM_COMMAND:
{
switch(wParam)
{
// Quitter
case ID_MAIN_QUITTER:
// demande confirmation
if(MessageBox(hWnd, "Etes-vous sur de vouloir quitter le programme ?", "Quitter ?", MB_ICONINFORMATION|MB_YESNO) == IDYES)
PostQuitMessage(0); // fin du programme
return TRUE;
// ancien prog
case ID_MAIN_OPEN:
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN), hWnd, OpenProc);
return TRUE;
// menu "A propos"
case ID_MAIN_INFO:
DialogBox(hInst, MAKEINTRESOURCE(IDD_INFO), hWnd, NULL);
return TRUE;
// nouveau projet
case ID_MAIN_NEW:
if(!CreateMDIWindow("Editor", "Untitled*", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, clientHwnd, hInst, NULL))
MessageBox(hWnd, "Erreur", "Erreur", MB_OK);
return TRUE;
}
}
default:
return DefWindowProc(hWnd, mes, wParam, lParam);
}
}
// fonction WinMain (point d'entrée du programme)
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// definition variable
WNDCLASSEX fenetre; // class de notre fenetre
HWND f_hWnd; // HWND de la fenetre
MSG msg; // variable de message
hInst = hInstance; // hinstance
// definition de notre class fenetre
fenetre.cbSize = sizeof(WNDCLASSEX);
fenetre.style = CS_HREDRAW | CS_VREDRAW;
fenetre.lpfnWndProc = MainProc;
fenetre.cbClsExtra = 0;
fenetre.cbWndExtra = 0;
fenetre.hInstance = hInstance;
fenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
fenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
fenetre.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOW+2);
fenetre.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);
fenetre.lpszClassName = "std";
fenetre.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&fenetre); // enregistrement de la class
// creation de la fenetre
f_hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "std", "AccessGen", WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, hInstance, NULL);
ShowWindow(f_hWnd, SW_SHOW);
SetFocus(f_hWnd); // donne focus
// reception des messages
while(GetMessage(&msg, NULL, 0, 0) == TRUE)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0; // fin app
}
cela m'inidque que la fenetre fils est créé, mais je ne vois rien !
est-ce que quelqu'un peut me dire pourquoi?
Merci par avance
Bob...
"La chance accorde ses faveur aux esprits avertis..."
Afficher la suite