#include "windows.h"
#include "iostream"
#include "resource.h"
HRESULT _stdcall MyDlgProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_COMMAND:
MessageBox(NULL,"xaxa","!",MB_OK); //Вот этот msgbox зависает.
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,msg,wParam,lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
HWND hwnd =CreateDialogA(hInstance,(LPCSTR)IDD_MAINWINDOW,NULL,(DLGPROC)MyDlgProc);
MSG msg;
ShowWindow(hwnd,SW_SHOW);
SetTimer(hwnd,1001,1000,0);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 1;
}
Проблема с диалогавыми окнами.
Почему в этом коде зависает( необрабатывает сообшения) массаджбокс
Вот примерно как должно быть:
Код:
#include <windows.h>
#include "resource.h"
BOOL CALLBACK MyDlgProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_COMMAND:
switch(wParam)
{
case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
default:
return false;
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
DialogBox(hInstance,"IDD_MAINWINDOW",NULL,MyDlgProc);
return 0;
}
#include "resource.h"
BOOL CALLBACK MyDlgProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_COMMAND:
switch(wParam)
{
case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
default:
return false;
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
DialogBox(hInstance,"IDD_MAINWINDOW",NULL,MyDlgProc);
return 0;
}
Код:
IDD_MAINWINDOW DIALOG 10, 10, 350, 200
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME
CAPTION "text"
{
//контролы
}
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME
CAPTION "text"
{
//контролы
}
Спасибо, про винапи я читал, токо чёт про диалоги нечитал )