MsgProc никогда не получает сообщения WM_? - PullRequest
0 голосов
/ 04 февраля 2011

У меня была программа, которая работала нормально, и сейчас пытаюсь сделать некоторые обновления. Но, похоже, больше не нужно получать некоторые сообщения Windows, такие как WM_LBUTTONDOWN или WM_SETCURSOR (вызывается WM_CREATE). Я не знаю, в чем проблема.

Это слоистое окно, созданное так:

wc.cbSize=sizeof(WNDCLASSEX);
wc.style=CS_CLASSDC;
wc.lpfnWndProc=MsgProc;
wc.cbClsExtra=0L;
wc.cbWndExtra=0L;
wc.hInstance=GetModuleHandle(NULL);
wc.hIcon=NULL;
wc.hbrBackground=NULL;
wc.lpszMenuName=NULL;
wc.lpszClassName="myapp";
wc.hCursor=hmain;

RegisterClassEx( &wc );

// Create the application's window
hWnd = CreateWindowEx(WS_EX_LAYERED|WS_EX_TOPMOST, "myapp", "myapp", 
                          WS_POPUPWINDOW|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, 10, 10, desiredwidth, desiredheight,
                          GetDesktopWindow(), NULL, wc.hInstance, NULL );

Я работаю в Visual Studio Express 2008 на Windows 7 x64 (я запустил эту программу на Win7 x86)

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 февраля 2011

Моя ошибка! Я удалил следующие строки:

    while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }

Не знаю, как это могло случиться, но действительно глупо!

0 голосов
/ 04 февраля 2011

Окно не видно.Добавьте WS_VISIBLE к вашим стилям или позвоните ShowWindow().

...