我想用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。
答案 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;
...
}