主题:关于ERROR_INVALID_WINDOW_HANDLE(窗口句柄无效)的处理方法
sasuke219
[专家分:30] 发布于 2006-03-20 11:10:00
HWND hTest;
hTest=CreateWindow(TEXT("button"),TEXT("TEST"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,20,20,40,20,hWnd,(HMENU)ID_TEST1,hInst,NULL);
以上是我程序里的2句话,都在WndProc中。程序编译生成均无错误,但在执行时出现ERROR_INVALID_WINDOW_HANDLE(窗口句柄无效),请问各位大大我的问题出在了哪里,应该怎摸解决
[em10]
回复列表 (共4个回复)
沙发
lusuo [专家分:10100] 发布于 2006-03-22 08:13:00
我记得我回答过了啊~自己搜索一下!和你同名的一个问题~看解答去!
板凳
sasuke219 [专家分:30] 发布于 2006-03-22 11:16:00
谢谢了,我这就去找
3 楼
sasuke219 [专家分:30] 发布于 2006-03-22 19:59:00
老大,你那种解决方法是用的MFC吧,我没用MFC,直接调用API的方式的这种错误应该怎摸处理呢???
4 楼
sasuke219 [专家分:30] 发布于 2006-03-23 16:14:00
以下是窗口处理函数的大致内容:(除了CreateWindow一小部分其他是.net2003中VC的WIN32项目生成的)
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
char a[4];
long b;
HWND hButton;
switch (message)
{
case WM_CREATE:
hButton=CreateWindow("button","button",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,10,10,20,15,
hWnd,(HMENU)ID_BUTTON,hInst,NULL);
b=GetLastError();
sprintf(a,"%d",b);
MessageBox(hWnd,a,"...",MB_OK);
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
我来回复