C++ 注册表类崩溃-C++;

C++ 注册表类崩溃-C++;,c++,windows,winapi,C++,Windows,Winapi,我在windows库工作,我对它还不熟悉,但我发现了一个错误,我在谷歌上搜索得够多了,我不知道发生了什么 这是我的密码: LRESULT CALLBACK WbWindow::st_wind_callback(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { // Code for the callback static function return 0; } WbWMResult WbWindow::Create() { //

我在windows库工作,我对它还不熟悉,但我发现了一个错误,我在谷歌上搜索得够多了,我不知道发生了什么

这是我的密码:

LRESULT CALLBACK WbWindow::st_wind_callback(HWND hWnd, UINT Message, WPARAM wParam, LPARAM
lParam)
{
 // Code for the callback static function
return 0;
}
WbWMResult WbWindow::Create()
{
// Put in the class values for our window
class_window_instance.cbSize = sizeof(WNDCLASSEX);
class_window_instance.lpfnWndProc=WbWindow::st_wind_callback;
class_window_instance.lpszClassName = window_name;
class_window_instance.style = NULL;
class_window_instance.cbClsExtra = 0;
class_window_instance.cbWndExtra = 0;
class_window_instance.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
class_window_instance.hCursor = LoadCursor(NULL, IDC_ARROW);
class_window_instance.hIcon = LoadIcon(NULL, IDI_APPLICATION);
class_window_instance.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
class_window_instance.hInstance = main_instance;
class_window_instance.lpszMenuName = NULL;

if(!RegisterClassEx(&class_window_instance)){
    MessageBox(0,"There was an error registering the window-classname.","Critical Error!",MB_ICONSTOP | MB_OK);
    return WBE_CLASSREG;
}

window_instance = CreateWindowEx(WS_EX_STATICEDGE,window_name,window_title,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,window_width,window_height,NULL,NULL,main_instance,NULL);
if(window_instance == NULL){
    MessageBox(0,"There was an error creating a window.","Critical Error!",MB_ICONSTOP | MB_OK);
    return WBE_WINCREATION;
}

created = WbTrue;

return WB_SUCCESS;
}
我得到的错误,是调试器的一个错误:未处理的异常,它说是.lpszMenuName的错误指针的问题,但这在五月的示例中有效,我不知道为什么

发生了什么事?我如何修复它?

谢谢

lpszClassName
lpWindowName
被定义为LPCSTR——窗口名称和窗口标题是否具有有效的字符串值?它们的定义在哪里?

对不起,我之前的回答是错误的,研究不够,我会看看是否可以删除它。您使用的是什么开发环境?我想到的另一件事是,
class\u window\u实例
结构没有初始化——您可以尝试
memset(&class\u window\u实例,0,sizeof(class\u window\u实例))
WbWindow::Create()
的开头?我已经试过了。。。。遗憾的是,它没有使用
={0}
,或
memset
,或
malloc
。。。我正在使用visual studio 2010I在VS2010中用您的代码做了一个小项目,我没有得到您的异常,我从
CreateWindowEx()
得到了一个空返回,因为WindowProc没有
返回DefWindowProc(hWnd,Message,wParam,lParam)--我能想到的唯一一件事就是在
RegisterClassEx()
调用中放置一个断点,看看在
类窗口\实例
结构中是否发现任何奇怪的东西--抱歉!泰。。。现在,我可以知道我的错误了,它来自代码的另一个地方。我会检查一下,然后告诉你问题出在哪里。宾果,错误如下:
window\u name
window\u title
是char*变量,如果我将这些变量传递到
.lpszClassName
CreateWindowEx
我有一个错误,我不知道为什么。如果我直接把
“Content”
放进去,就可以了。你知道那里发生了什么吗?就是这样,我的朋友!谢谢窗口名称和窗口标题被定义为char*,实际上这不是LPCSTR的定义,所以我需要const char*。谢谢您可以将char*传递给const char*,因此,据我所知,这并不能回答任何问题。。。。这很奇怪,但现在它的工作与变化很好。