RegisterClassEx()函数注册失败 返回0

_Elegant 2014-04-19 08:36:12
vs2012生成一个mfc程序实现窗口类创建,注册,显示及更新。

BOOL CMyOwnerDrawApp::InitInstance()
{
CWinApp::InitInstance();
CMainFrame* pMainFrame = new CMainFrame();
pMainFrame->CreateEx(0,
_T("MAINFRAME"),
_T("自绘程序"),
WS_POPUPWINDOW | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_THICKFRAME,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL);
m_pMainWnd = pMainFrame;
pMainFrame->ShowWindow(SW_SHOW);
pMainFrame->UpdateWindow();
return TRUE;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
HINSTANCE hInstance = (HINSTANCE)AfxGetInstanceHandle();
ASSERT(hInstance);

WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
BOOL bRet = GetClassInfoEx( hInstance, cs.lpszClass, &wcex);
if (bRet)
{
return TRUE;
}

wcex.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS;
wcex.lpfnWndProc = AfxWndProc;
wcex.cbSize = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = (HICON)::LoadIcon(hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
wcex.hIconSm = (HICON)::LoadIcon(hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
wcex.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = cs.lpszClass;
bRet = RegisterClassEx(&wcex);
return bRet;
}


如此这样,可是在调用bRet = RegisterClassEx(&wcex);返回值却是0,意思就是没注册成功咯?
我按着别人视频一步步来的,重新看了好几遍,就是找不到什么原因。
我调试了一下程序在pMainFrame->ShowWindow(SW_SHOW);时崩溃了。
求大神帮忙看看问题出在哪里。感谢!!
...全文
544 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Elegant 2014-04-19
  • 打赏
  • 举报
回复
引用 1 楼 mfcing 的回复:
wcex.cbSize = sizeof(WNDCLASSEX); 后面又来了个 wcex.cbSize = 0; 结构体填充错了 去掉 wcex.cbSize = 0;
哈哈 是哦。 打错了,应该是wcex.cbClsExtra = 0。 这种小错误都没发现。 谢谢 太感谢了。看了一下午。
疯狂-的-蜗牛 2014-04-19
  • 打赏
  • 举报
回复
wcex.cbSize = sizeof(WNDCLASSEX); 后面又来了个 wcex.cbSize = 0; 结构体填充错了 去掉 wcex.cbSize = 0;

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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