MsgProc永远不会收到WM_消息?

时间:2011-02-04 14:23:46

标签: visual-studio programming-languages 64-bit c++

我有一个工作正常的程序,我正在尝试进行一些更新。 但似乎没有更多的接收一些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 );

我在Windows 7 x64上的Visual Studio Express 2008下开发(我在Win7 x86上启动了这个程序)

由于

2 个答案:

答案 0 :(得分:0)

窗口不可见。将WS_VISIBLE添加到您的样式,或致电ShowWindow()

答案 1 :(得分:0)

我的错!我删除了以下几行:

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

不知道怎么会发生,但真的很蠢!