【发布时间】:2012-06-03 09:35:46
【问题描述】:
我想用winAPI创建一个窗口:
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,
int nShowCmd)
{
WNDCLASSEX wClass;
HWND hWnd;
wClass.cbClsExtra=NULL;
wClass.cbSize=sizeof(WNDCLASSEX);
wClass.cbWndExtra=NULL;
wClass.hbrBackground=(HBRUSH)COLOR_WINDOW;
wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wClass.hIcon=NULL;
wClass.hIconSm=NULL;
wClass.hInstance=hInst;
wClass.lpfnWndProc=(WNDPROC)WinProc;
wClass.lpszClassName=TEXT("Window Class");
wClass.lpszMenuName=NULL;
wClass.style=CS_HREDRAW|CS_VREDRAW|CS_DROPSHADOW ;
if(!RegisterClassEx(&wClass))
{
int nResult=GetLastError();
MessageBox(NULL,
TEXT("Window class creation failed"),
TEXT("Window Class Failed"),
MB_ICONERROR);
}
hWnd=CreateWindowEx(NULL,
TEXT("Window Class"),
TEXT("My Process Explorer"),
WS_OVERLAPPEDWINDOW,
200,
20,
800,
630,
NULL,
NULL,
hInst,
NULL);
}
但我收到访问冲突错误。 为什么?
【问题讨论】:
-
为什么要将
WinProc转换为(WNDPROC)?此外,您似乎忘记了对RegisterClassEx的呼叫。 -
如果
WinProc具有正确的签名,您不应该收到警告。投射隐藏错误/警告,而不是解决它们。不要这样做!请注意,您将需要一个消息循环,并且默认情况下不会显示您的窗口(需要WS_VISIBLE或ShowWindow某处)。我认为您应该花一些时间来完成教程。 -
@tenfour:已编辑!但仍然得到那个错误!我学习了几个教程!我的程序运行正常!但过了一段时间它开始给我这个错误。 (这不是我的完整代码!)
-
使用调试器并找出它崩溃的地方。哪一行代码。您粘贴的代码无法帮助您。
-
这很可能是你的
WinProc中的一个错误,正如我已经提到的......
标签: c windows winapi visual-c++