Przeczytałem ten wątek msdn’a chyba ze 100 razy, ale dalej gdzieś robię błąd… dalej nie mam pojęcia co mam robić z tą strukturą ACCEL, na skutek czego przy debugowaniu wywala mi błąd. Dalej nie wiem dlaczego mi to okno nie chce wyskoczyć… Jakby ktoś się mógł tutaj błędów doszukać, to byłbym wdzięczny
#include
#define CHILDCLASSNAME (LPCWSTR)"szchild"
#define PARENTCLASSNAME (LPCWSTR)"szparent"
#define FRAMETEXT L"Kółko i krzyżyk v2.0"
#define CHILDRENWNDID 311
#define CBWNDEXTRA 1024
HWND childwnd;
LRESULT CALLBACK parentproc(HWND hwnd, UINT uint, WPARAM wparam, LPARAM lparam);
LRESULT CALLBACK childproc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR cmdline, int showcmd)
{
WNDCLASS wc;
// Register the frame window class.
wc.style = 0;
wc.lpfnWndProc = (WNDPROC) parentproc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIconA(0, (LPCSTR)IDI_APPLICATION);
wc.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);
wc.lpszMenuName = 0;
wc.lpszClassName = PARENTCLASSNAME;
if (!RegisterClass (&wc) )
{
MessageBoxA(0, "Unable to register the class", "ERROR", MB_OK | MB_ICONERROR);
PostQuitMessage(1);
}
// Register the MDI child window class.
wc.lpfnWndProc = (WNDPROC) childproc;
wc.hIcon = LoadIconA(0, (LPCSTR)IDI_APPLICATION);
wc.lpszMenuName = (LPCTSTR) NULL;
wc.cbWndExtra = CBWNDEXTRA;
wc.lpszClassName = CHILDCLASSNAME;
if (!RegisterClass (&wc) )
{
MessageBoxA(0, "Unable to register the class", "ERROR", MB_OK | MB_ICONERROR);
PostQuitMessage(1);
}
HWND parentwnd=CreateWindowEx(0, PARENTCLASSNAME, FRAMETEXT, WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, 100, 100, 300, 300, 0, 0, hinstance, 0);
MSG msg;
BOOL bRet;
LPACCEL acc;
HACCEL hAccel=CreateAcceleratorTable(acc, 0);
while ((bRet = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0 && msg.message!=WM_QUIT)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
if (!TranslateMDISysAccel(childwnd, &msg) &&
!TranslateAccelerator(parentwnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
return (int)msg.wParam;
}
LRESULT CALLBACK parentproc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
CLIENTCREATESTRUCT ccs;
switch(message){
case WM_CREATE:
ccs.hWindowMenu = 0;
ccs.idFirstChild = CHILDRENWNDID;
childwnd=CreateMDIWindow(CHILDCLASSNAME, L"Child", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN, 50, 50, 100, 100, hwnd, GetModuleHandle(0), 0);
//childwnd=CreateWindowEx(0, CHILDCLASSNAME, L"Child", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN, 50, 50, 100, 100, hwnd, 0, GetModuleHandle(0), &ccs);
return 0;
}
return DefFrameProc(hwnd, childwnd ,message, wparam, lparam);
}
LRESULT CALLBACK childproc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
return DefMDIChildProc(hwnd, message, wparam, lparam);
}