プロが教えるわが家の防犯対策術!

VC++2005、MFCにてプログラムを作成しています。
サイズ変更枠のダイアログには、デフォルトでタイトルバーの左端に、
小さいウィンドウのようなアイコンが表示されますが、
クローズボックスは表示したままで、アイコンだけを消したいのです。
(よってプロパティのSystemMenuの値はTrueで固定)

自分で調べた方法で、
1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); を消す。
2.OnInitDialog()中で次の2行を消す。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
とありますが、どちらも不可能でした。
※IDR_MAINFRAMEがソースに存在しない、OnIni内にSetIconが存在しない等

GetWindowStyle()を利用すれば実現できるとも聞いたのですが、
使い方が分からず、手が出せない状況です。
もし実現させる方法をご存知の方おられましたら、ご教示お願い致します。

A 回答 (1件)

こんにちは。



以下は、MFC使用&ダイアログベースでのWinアプリ作成時(デフォルト構成から
あまり変更を加えていない場合)の話としてのコメントです。
※見当外れだった場合はすみません。

まず、ダイアログクラスの OnInitDialog() 内に、
  SetIcon(m_hIcon, TRUE);    // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定
のような記述がなく、かつ「アプリ実行時のタイトルバーにアイコンが表示されている」
ということは、システムのデフォルトのアイコンが表示されているのかもしれません。

それと、リソースエディタでのダイアログのプロパティ設定にて、
  [境界線] の設定を 「サイズ変更枠」
に設定されているのではないでしょうか?

あくまで一例ですが、以下のような設定でアイコンを非表示にできるかもしれません。
※上手くいかなかった場合はすみません。

※当方は「VC++2005」を使ったことがないので、設定の画面、項目名などが異なって
いるかもしれません。 その際は、同等な機能・項目などに置き換えて下さい。
(もう過去の遺物ですが、当方は未だに「Visual C++ 5.0」を使用しています。(^_^;) )

==============================
■リソースエディタ上でのダイアログのプロパティ設定

 スタイル      : ポップアップ、または、オーバーラップ
 境界線       : ダイアログ枠
               ※ここでは「サイズ変更枠」には設定しない。
 タイトルバー    : チェックマークをON
               ※スタイル設定をポップアップにした場合。
 システムメニュー : チェックマークをON

■ダイアログクラスの OnInitDialog() への変更・追加

 下記の例のように、ウインドウスタイル、システムメニューの設定を変更・追加してみて下さい。

  this->ModifyStyle(0, WS_THICKFRAME);    //←スタイルに「サイズ変更枠」を追加
  CMenu* pSysMenu = GetSystemMenu(FALSE);
  if (pSysMenu != NULL)
  {                            //↓システムメニューに「サイズ変更」を追加
    pSysMenu->AppendMenu(MF_STRING, SC_SIZE, "サイズ変更(&S)");
  }

 あと、もし下記2行のような記述があった場合は、コメントアウトさせるか、削除して下さい。

  SetIcon(m_hIcon, TRUE);    // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定

【補足】
1)作成したアプリ実行時に、タイトルバー上で右クリックするとシステムメニューが表示されると
  思います。
2)参考までに、上記の設定を行ったサンプルアプリでの、ダイアログプロパティの設定画面例と、
  アプリ実行画面のキャプチャ画像を添付してみました。

==============================

なお、上記の設定例は下記サイトを参考にさせて頂きました。

■参考サイト
ダイアログの左端のアイコンを非表示にするには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng. …

ダイアログのシステムメニューで、アイコンはつけないで×「閉じる」ボタンだけつけるには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng. …

CreateWindowで作成したウィンドウに、アイコンはつけないで×「閉じる」ボタンだけつけるには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng. …

以上です。参考になれば幸いです。
「サイズ変更枠ダイアログのタイトルバー左端」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VC++2005にて上記方法を試してみた結果、
期待通りの動作をさせることが出来ました。
ありがとうございました。

お礼日時:2009/07/22 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています