0x75B48987 (user32.dll) (Win32Project1.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xCCCCC

m0_37704547 2017-04-04 09:34:10
初学windows程序设计,完全按照书上打的程序,就是显示一个基本的窗口。
程序没提示错误,就是一直显示“0x75B48987 (user32.dll) (Win32Project1.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xCCCCCCCC 时发[/code]生访问冲突。”
菜鸟求助啊



#include <Windows.h>
#include<tchar.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数说明
//---------以下是入口函数的代码--------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wcex;
HWND hWnd;
MSG msg;
TCHAR szWindowClass[] = L"窗口示例"; //窗口类名
TCHAR szTitle[] = L"My Windows"; //窗口标题名

//----------以下初始化窗口类-------------
wcex.cbSize = sizeof(WNDCLASSEX); //窗口类的大小
wcex.style = 0; //窗口类型为默认类型
wcex.lpfnWndProc = WndProc; //窗口处理函数为WndProc
wcex.cbClsExtra = 0; //窗口类无扩展
wcex.cbWndExtra = 0; //窗口实例无扩展
wcex.hInstance = hInstance; //当前实例句柄
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
//窗口的图标为默认图标
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
//窗口采用箭头光标
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色
wcex.lpszClassName = szWindowClass; //窗口类名为"窗口示例"
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
//窗口的小图标为默认图标

//-----------以下进行窗口类的注册--------
if (!RegisterClassEx(&wcex)) //如果注册失败则发出警告
{
MessageBox(NULL, _T("窗口类注册失败!"), _T("窗口注册"), NULL);
return 1;
}

//-----------以下为创建窗口-------------
hWnd = CreateWindowW(
szWindowClass, //窗口类名
szTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT, CW_USEDEFAULT, //窗口的左上角坐标为默认值
CW_USEDEFAULT, CW_USEDEFAULT, //窗口的高和宽为默认值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //创建此窗口应用程序的当前句柄
NULL //不使用该值
);
if (!hWnd) //如果创建窗口失败则发出警告
{
MessageBox(NULL, L"创建窗口失败!", _T("创建窗口"), NULL);
return 1;
}
ShowWindow(hWnd, nCmdShow); //显示窗口
UpdateWindow(hWnd); //绘制用户区
while (GetMessage(&msg, NULL, 0, 0)) //消息循环
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return(int)msg.wParam; //程序终止时将信息返回系统
}

//---------------以下是窗口函数的代码-------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0); //调用PostQuitMessage发出WN_PQUIT消息
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
//默认时采用系统消息默认处理函数
break;
}
return 0;
}
...全文
1243 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_15984549 2019-05-13
  • 打赏
  • 举报
回复


引用 7 楼 棉猴 的回复:
你的代码中,对WNDCLASSEX的成员变量指定值时,没有对lpszMenuName赋值。可以在
if (!RegisterClassEx(&wcex)) 

代码之前加入如下代码
wcex.lpszMenuName = NULL;

lpszMenuName指定了窗口菜单的名称,如果将该变量设置为NULL,则表示创建的窗口没有默认菜单。
VS2010的运行的效果如图

这个可以解决问题 亲测
棉猴 2019-01-14
  • 打赏
  • 举报
回复
你的代码中,对WNDCLASSEX的成员变量指定值时,没有对lpszMenuName赋值。可以在
if (!RegisterClassEx(&wcex)) 

代码之前加入如下代码
wcex.lpszMenuName = NULL;

lpszMenuName指定了窗口菜单的名称,如果将该变量设置为NULL,则表示创建的窗口没有默认菜单。
VS2010的运行的效果如图
ZxPiano 2019-01-13
  • 打赏
  • 举报
回复
你好,在你的WinMain加一句“wcex.lpszMenuName = NULL; ”试一下吧。
ooolinux 2017-04-05
  • 打赏
  • 举报
回复
引用 3 楼 u010165006 的回复:
不要学这个了,叼用没有, 可以学下C++ Builder
图形用户界面可以学习C++ Builder,架构先进,入门比较容易。 C++ Builder的较新版本——RAD Studio XE3以上版本添加对iOS和Android的支持工具包,让开发者编写的Delphi/C++应用可以同时在Windows、OS X、iOS和Android平台上运行。现在最新版本是RAD Studio 10.1。 仅供参考: 初学者学习C++ Builder第一个程序(模拟聊天室),经典! http://blog.163.com/tab_98/blog/static/11924097201693033057497/ C++ Builder绘图示例(模拟时钟) http://blog.163.com/tab_98/blog/static/11924097201611324819376/ 从C语言的菜单界面管理系统到C++ Builder的图形用户界面,一个简单的电话簿Demo例子 http://blog.163.com/tab_98/blog/static/1192409720158673337998/ C++ Builder写的《ZEC 纸牌游戏21点》 http://blog.163.com/tab_98/blog/static/119240972016115113039304/ C++ Builder写的《ZEC 僵尸版打地鼠》 http://blog.163.com/tab_98/blog/static/11924097201601084117748/ C++ Builder写的《ZEC 推箱子》 http://blog.163.com/tab_98/blog/static/11924097201612011839642/ 书籍推荐: 《C++Builder 6程序设计教程(第二版)》 (陆卫忠,刘文亮 等编著 /2011-04-01 /科学出版社) 《C++Builder6编程实例精解》(赵明现),PDF,是数字版的,非扫描版的,里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》(台湾 吴逸贤),里面有10几个简单小游戏的实现,可以自己看懂以后再重写,才是自己掌握的。 《C++ Builder 5高级编程实例精解》(刘滨 编著)都是较大的实用的程序。
ooolinux 2017-04-05
  • 打赏
  • 举报
回复
不要学这个了,叼用没有, 可以学下C++ Builder
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
FD_2013 2017-04-04
  • 打赏
  • 举报
回复
不要学这个了,叼用没有, 学下QT吧
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.3版分为标准版、增强版以及在线修复版。其的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框包含了4项高级功能。点击其的“注册系统文件夹所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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