ちょうど小さなwin32プロジェクトをセットアップしようとしましたが、ウィンドウを作成しようとしていました。CWindowImpl - エラーコード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);
しかし、CreateメソッドがNULLのすべての時間を返さない:ダイアログを作成することになっているクラスで
は、私はこのようにそれを作成しようとしました。 GetLastError()でエラーコードをチェックしたところ、エラーコード1406または "ERROR_TLW_WITH_WSCHILD"が表示されていました。
MSDNドキュメントはこのエラーについては、次の言葉:
「トップレベルの子ウィンドウを作成できません。」
私はこれにgoogleしようとしましたが、見つけることはあまりありません。
私が推測しなければならない問題は、いくつかのウィンドウクラス名の詳細が原因であると言えますが、実際はわかりません。
アドバイスはありますか?
リソースでダイアログの属性を確認してください。おそらくあなたはそこに 'WS_CHILD'を含んでいます。直接的または間接的に。とにかく、リソーススクリプトを投稿してください。トンの場合は、最小限の完全な例に減らし、投稿してください(あなたはAFXのものを含める必要はありません)。 –