ダイアログのウィンドウクラス名の変更

こんなのわかるかボケェ!と叫びたくなったことです。
ダイアログベース以外のアプリケーション(SDIやMDI)はPreCtreateWindowで変更することが可能ですが、ダイアログベールの場合は分かりづらい。

  1. リソースのプロパティ(リソースのツリーのルートで右クリック)を表示して、"MFCのライブラリを使用(M)"のチェックをはずす。
  2. ダイアログのリソースを開いて、ダイアログのプロパティの一般タブの、クラス名(右下隅)にお好みのクラス名を記入する。
  3. リソースのプロパティ(リソースのツリーのルートで右クリック)を表示して、"MFCのライブラリを使用(M)"のチェックをつける。
  4. CWinAppの派生クラスのInitInstance()内で、以下の様にソースを追加する。
ウィンドウクラス名を変更する例
BOOL CJPEclipsePluginApp::InitInstance(){
・・・
    WNDCLASS wc;
    wc.style = CS_DBLCLKS;
    wc.lpfnWndProc = DefDlgProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = DLGWINDOWEXTRA;
    wc.hInstance = m_hInstance;
    wc.hIcon = NULL;
    wc.hCursor = LoadCursor( IDC_ARROW );
    wc.hbrBackground = NULL;
    wc.lpszMenuName = NULL;
    wc.lpszClassName = _T("ダイアログに設定したクラス名を記述");
    if( !AfxRegisterClass( &wc ) ){
        return FALSE;
    }
・・・
}

たどり着くのにえらく時間が掛かった。

参考資料

piyokatoホームページウィンドウクラス名を変更する(+ダイアログベース)