저는 윈도우 라이브러리에 익숙해졌습니다. 새로운 것이지만, 제가 충분히봤을 때 오류가 나고 있습니다. 무슨 일이 일어나고 있는지 잘 모릅니다. 여기 RegisterClassEx 크래시 - C++
내 코드입니다 :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에서 잘못된 포인터에 문제가하지만 그 작동 말한다 예를 들어, 왜 그런지 모르겠다.
어떻게 될까요? 어떻게 해결할 수 있습니까? window_name을하고 유효한 문자열 값이 WINDOW_TITLE -
감사
죄송합니다. 이전 답변이 잘못되었으므로 충분히 조사되지 않았으므로 삭제할 수 있는지 확인하겠습니다. 어떤 개발 환경을 사용하고 있습니까? 또 다른 한가지는 class_window_instance 구조체가 초기화되지 않는다는 것입니다. WbWindow :: Create()의 시작 부분에서'memset (& class_window_instance, 0, sizeof (class_window_instance)); '? –
나는 이미 그것을 시도했다 .... 슬픈 듯이'= {0}', 또는'memset', 또는'malloc' ... Visual Studio 2010을 사용하고있다. – Spamdark
나는 VS2010에서 작은 프로젝트를 만들었다. 귀하의 코드와 함께, 나는 예외가 발생하지 않습니다. WindowProc에'DefWindowProc (hWnd, Message, wParam, lParam) return이 없기 때문에'CreateWindowEx()'에서 NULL 반환을 얻었습니다. 'RegisterClassEx()'호출에 중단 점을 넣고'class_window_instance' 구조체에서 이상한 것을 찾았는지 확인하십시오 - 미안 해요! –