求高手指教win32项目用VS2010编写的窗口函数出现0x00000000 处有未经处理的异常: 0xC0000005: Access violation错误

清风羽 2014-05-18 02:22:39
#include<Windows.h>
#include<tchar.h>
//声明窗口函数
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
//入口函数WinMain()
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
//定义窗口类
WNDCLASS wndclass;
wndclass.lpfnWndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.style =CS_HREDRAW |CS_VREDRAW;
wndclass.lpszClassName=_T("我的窗体");//在使用Unicode字符集
wndclass.hInstance=hInstance;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//获取标准鼠标光标 arrow箭头 Cursor光标
wndclass.hIcon=0;//窗口类的图标
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);//窗口背景颜色
wndclass.lpszMenuName=0;//指向菜单名的字符指针
//注册窗口类
if(RegisterClass(&wndclass)==0)
{
MessageBox(0,_T("窗口类注册失败"),_T("我的窗口"),MB_OK);//(消息框的拥有窗口、如果此参数为NULL、则消息框没有拥有窗口;消息框的内容;消息框的标题;决定对话框的内容和行为的位标志集)
return 0;
}
//创建窗口实例
HWND hWnd=CreateWindow(_T("我的窗体"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,100,100,500,400,0,0,hInstance,0);
/*if( hWnd==NULL)
{
return 0;
}*/
//显示和更新窗口 调用了函数ShowWindow UpdateWindow
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
//消息循环
MSG msg;
while (GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);//将虚拟键消息转换为字符消息
DispatchMessage(&msg);//将消息传送到窗口函数 dispatch 调度; 派遣;分派
}
return 0;
}
//定义窗口函数
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch (uMsg)
{
case WM_CLOSE://接收到窗体关闭消息
PostQuitMessage(0);//给消息队列发送WM_QUIT消息,以便结束消息循环,退出程序
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}




(图片传不上来只能黏贴文字了)自动窗口错误:
- hInstance 0x00140000 {unused=9460301 } HINSTANCE__ *
unused 9460301 int
- hWnd 0xcccccccc {unused=??? } HWND__ *
unused CXX0030: 错误: 无法计算表达式的值

输出窗口的错误提示:
“Simplewindow.exe”: 已加载“C:\Windows\System32\netapi32.dll”,Cannot find or open the PDB file
“Simplewindow.exe”: 已加载“C:\Windows\System32\netutils.dll”,Cannot find or open the PDB file
“Simplewindow.exe”: 已加载“C:\Windows\System32\srvcli.dll”,Cannot find or open the PDB file
“Simplewindow.exe”: 已加载“C:\Windows\System32\wkscli.dll”,Cannot find or open the PDB file
Simplewindow.exe 中的 0x00000000 处最可能的异常: 0xC0000005: Access violation
Simplewindow.exe 中的 0x00000000 处有未经处理的异常: 0xC0000005: Access violation

点击错误提示定位错误是在代码 HWND hWnd=CreateWindow(_T("我的窗体"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,100,100,500,400,0,0,hInstance,0);


...全文
387 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-19
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
allenltiverson 2014-05-18
  • 打赏
  • 举报
回复
highnewrain 2014-05-18
  • 打赏
  • 举报
回复

wndclass.lpfnWndProc;               //这里你忘记初始化了

wndclass.lpfnWndProc=WindowProc; //初始化一下,搞定

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧