CreateWindowEx方法始终返回null。
我不知道什么是错的,但我甚至无法创建一个窗口。
我的窗口过程是一个静态方法,BaseWndApplication :: WndProc,在另一个类中定义,我不确定是否会导致任何问题,因为我可以成功注册我的WNDCLASSEX结构。
请heeeelp !!
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine ,
int nCmdShow
)
{
const char * WINDOW_CLASS_NAME = "D2DAppClass";
HRESULT hr;
{
// Register the window class.
WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = BaseWndApplication::WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hbrBackground = NULL;
wcex.lpszMenuName = NULL;
wcex.hCursor = LoadCursor(NULL, IDI_APPLICATION);
wcex.lpszClassName = WINDOW_CLASS_NAME;
if (!RegisterClassEx(&wcex))
return E_FAIL;
HWND m_hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
WINDOW_CLASS_NAME,
"Direct2D Demo App",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
static_cast<UINT>(ceil(640.f)),
static_cast<UINT>(ceil(480.f)),
NULL,
NULL,
hInstance,
NULL
);
hr = m_hWnd ? S_OK : E_FAIL;
if (SUCCEEDED(hr))
{
ShowWindow(m_hWnd, SW_SHOWNORMAL);
UpdateWindow(m_hWnd);
}
}
return 0;
}
答案 0 :(得分:2)
我的回调方法存在问题。它被设置为0;
我按如下方式更改了它,然后它起作用了:
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hWnd, message, wParam, lParam);
}