我只是試圖設置一個小型的win32項目,並且正要創建一個窗口。CWindowImpl - Create()返回錯誤代碼1406
我創建的資源設計一個對話框,設置這個類爲我的窗口:
#pragma once
#include "stdafx.h"
class TTTMainDialog : public CWindowImpl<TTTMainDialog>
{
public:
DECLARE_WND_CLASS(_T("TTTDlg"))
enum { IDD = IDD_TTT_DIALOG };
BEGIN_MSG_MAP_EX(MusicPlayerDialog)
MSG_WM_INITDIALOG(OnInitDialog);
MSG_WM_CLOSE(OnClose);
MSG_WM_DESTROY(OnDestroy);
END_MSG_MAP()
TTTMainDialog();
~TTTMainDialog();
private:
const BOOL OnInitDialog(const CWindow wndFocus, const LPARAM lInitParam);
void OnClose();
void OnDestroy();
};
正如你所看到的,我加入了窗口類的聲明,我繼承了CWindowImpl的,我註冊的對話框。我不認爲我在這裏忘記了一些東西。
在這是爲了創建對話框類的,我想是這樣創造的:
TTTMainDialog myDialog;
HWND handle = myDialog.Create(NULL);
myDialog.ShowWindow(nCmdShow);
然而,創建方法並返回NULL所有的時間。我用GetLastError()檢查了錯誤代碼,結果我得到了錯誤代碼1406或「ERROR_TLW_WITH_WSCHILD」。
MSDN文檔指出以下有關此錯誤:「無法創建頂層子窗口」
我試圖谷歌了這一點,但沒有多少發現。
如果我不得不猜測,我會說這個問題是由一些窗口類名稱的細節引起的,但我真的不確定。
有什麼建議嗎?
檢查對話框的屬性中的資源。也許你在那裏包含了'WS_CHILD'。直接或間接。無論如何,發佈資源腳本。除非它噸,在這種情況下,減少到一個最小的,但完整的例子,並張貼它(你不需要包括AFX的東西)。 –