本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] MFC が生成するウィンドウクラス名を変更する方法

文書番号: 403825

最終更新日: 2004/04/27


この資料は以下の製品について記述したものです。


概要

この資料は Visual C++ の MFC が生成するウィンドウクラス名を、ユーザが任意の
名前に変更するの一つの方法を紹介したものです。

詳細

CMainFrame クラスで親クラスの PreCreateWindow 関数をオーバーライドして以下の 処理を行います。( Visual C++ 4.0 では、AppWizard が生成したスケルトンにおいて、 すでにオーバーライドされています。)
デフォルトの PreCreateWindow 関数を呼び出した後に、RegisterClass 関数で新しい クラスを登録します。このクラスは、デフォルトの PreCreateWindow 関数が設定した 内容を GetClassInfo 関数で読み込んで使用します。引き渡された CREATESTRUCT
構造体の lpszClass メンバ変数に新しく登録したクラス名の代入し、戻り値として
デフォルトの PreCreateWindow からの戻り値を返します。(リターン値に適切な
値を返さないと、その後ドキュメントの作成でエラーが発生します)

サンプルプログラム

  BOOL CMainFrame::PreCreateWindow( CREATESTRUCT& cs )
  {
      LPCSTR   lpzsNewName = "newClassName";
      WNDCLASS wndcls;
      BOOL bRes = CFrameWnd::PreCreateWindow( cs );   // MDI では CMDIFrameWnd
      HINSTANCE hInst = AfxGetInstanceHandle();
      // see if the class already exists
      if ( !::GetClassInfo( hInst, lpzsNewName, &wndcls ) )
      {
          // get default stuff
          ::GetClassInfo( hInst, cs.lpszClass, &wndcls );
          // register a new class
          wndcls.lpszClassName = lpzsNewName;
          wndcls.hIcon = ::LoadIcon(hInst,MAKEINTRESOURCE(IDR_MAINFRAME));
          ::RegisterClass( &wndcls );
      }
      cs.lpszClass = lpzsNewName;
      return bRes;
  }

詳細

  • Visual C++ は、米国 Microsoft Corporation の登録商標です。

Keywords: KBHOWTO VC10 VC15 VC20 KB403825
Technology: kbAudDeveloper kbVC32bitSearch kbVC400 kbVCsearch

inserted by FC2 system