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

我和ye猫子 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);


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

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

wndclass.lpfnWndProc=WindowProc; //初始化一下,搞定
打开链接下载源码: https://pan.quark.cn/s/589796089f72 C++课程设计任务列表,涵盖以下内容:1、识别并显示10至99范围内,各位数乘积超过各位数和的数值,例如数字12不满足条件,因为1乘以2小于1加2,故不输出;而数字27满足条件,因为2乘以7大于2加7,因此需要输出该数。2、开发一个功能,用于从用户输入的任意数量实数中找出最大值与最小值:首先要用户输入一个正整数n,代表数值的个数,随后用户可输入任意n个实数,程序需找出这n个数中的最大值和最小值并将它们展示出来。3、实现两个已排序数组的合并操作:设有数组A和B,且假设这两个数组的元素均已按照降序排列。编写程序将A和B合并成一个新的数组C,并确保C中的元素同样保持降序排列。int A[10]={123, 86,80, 49,33,15,7,0,-1,-3};int B[10]={100,64,51,50,27,19,15,12,5,2};4、设计一个函数,用于计算特定分数序列前n项的总和,该序列为1/2,1/3,1/4,1/5,1/6,1/7,...。要在主程序中提示用户输入一个整数n,并验证输入的合法性(n需大于1方为有效),若输入合法,则调用和函数并显示计算结果。5、编写一个程序,计算两个用户输入日期之间的天数差:用户需以year1,month1,day1和year2,month2,day2的格式输入两个日期,程序随后计算这两个日期之间的天数间隔,并将结果输出到屏幕上。要编制具有如下原型的函数difs2Date:long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2);并在主函数中调用此函数,将计...

65,211

社区成员

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

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