在我的应用程序中,函数CreateWindow
由于某种原因失败了。 GetLastError
表示错误1407,根据MSDN文档,“无法找到窗口类”。以下代码显示了如何调用CreateWindow
以及调用时各个变量的名称:
m_hInstance = ::GetModuleHandle( NULL );
if ( m_hInstance == NULL )
{
TRACE(_T("CNotifyWindow::CNotifyWindow : Failed to retrieve the module handle.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__);
THROW(::GetLastError());
}
m_hWnd = ::CreateWindow(
_pwcWindowClass, // L"USBEventNotificationWindowClass"
_pwcWindowName, // L"USBEventNotificationWindow"
WS_ICONIC,
0,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
m_hInstance, // 0x00400000
NULL
);
if ( m_hWnd == NULL ) // m_hWnd is returned as NULL and exception is thrown.
{
TRACE(_T("CNotifyWindow::CNotifyWindow : Failed to create window.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__);
THROW(::GetLastError());
}
::ShowWindow( m_hWnd, SW_HIDE );
我做错了什么?
答案 0 :(得分:7)
您必须先调用RegisterClassEx,然后才能在CreateWindow上使用窗口类。
示例代码here。
每个流程都必须注册自己的流程 窗口类。注册 应用本地类,使用 RegisterClassEx函数。你必须 定义窗口过程,填写 WNDCLASSEX结构的成员, 然后传递一个指向 RegisterClassEx的结构 功能