【问题标题】:I have a problem about creating a window with C++我有一个关于用 C++ 创建窗口的问题
【发布时间】:2020-02-03 13:39:54
【问题描述】:

我想用 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。

【问题讨论】:

标签: c++ winapi window


【解决方案1】:

这一行是错误的:

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; 
    ...
}

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    相关资源
    最近更新 更多