我在使用C ++创建窗口时遇到问题

时间:2019-10-05 15:07:52

标签: c++ winapi window

我想用C ++创建一个窗口,但是我遇到了问题。

这是我的代码:

#include <windows.h>
#include <winuser.h>

int CreateDetectWindow()
{
    MSG msg;
    WNDCLASS wndc;

    LPSTR szAppName = "Web Download";

    wndc.style = 0;
    wndc.lpfnWndProc = WNDPROC;
    wndc.cbClsExtra = 0;
    wndc.cbWndExtra = 0;
    wndc.hInstance = NULL;
    wndc.hIcon = NULL;
    wndc.hCursor = NULL;
    wndc.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
    wndc.lpszMenuName = NULL;
    wndc.lpszClassName = szAppName;

    RegisterClass(&wndc);

    HWND hWnd = CreateWindow(szAppName,"whboy",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT,CW_USEDEFAULT,
        NULL,NULL,NULL,NULL);

    ShowWindow(hWnd,SW_SHOW);
    UpdateWindow(hWnd);

    SendMessage(hWnd,WM_DEVICECHANGE,0,0);

    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 1;
}

int main(){
    CreateDetectWindow();
}

第9行出现这样的错误:

  

[错误] D:\ developer \ C C ++ \ window.cpp:9:错误:';'之前的预期主表达式令牌

我正在使用Windows 10 64位和称为C-Free的IDE。

1 个答案:

答案 0 :(得分:2)

此行是错误的:

wndc.lpfnWndProc = WNDPROC;

WNDPROC是一种类型,而不是变量。 lpfnWndProc需要一个指向与WNDPROC定义的签名相匹配的函数的指针,例如:

#include <windows.h>

LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        ...
        case WM_DEVICECHANGE:
        {
            ...
            break;
        }
        ...
    }

    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

int CreateDetectWindow()
{
    ...
    wndc.lpfnWndProc = &MyWindowProc; 
    ...
}