環境は
VC++6.0 Windows XPです。
過去ログに同じものがあったのですが、
解決してませんでした。
バツボタンだけが欲しいのですが・・・
過去ログ
ダイアログの左端のアイコンを非表示にするには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200102/01020001.txt
この過去ログだとデフォルトのダイアログのシステムメニューの場合だと思います。
僕のはデフォルトではないので、
LoadIconなどのスケルトン記述はありません。
> 僕のはデフォルトではないので、
?
ダイアログをリソースに追加して、ClassWizardでダイアログクラスを作って、
それをDoModalで表示してみたけど、アイコンは表示されていませんよ。
(CAboutDlgも×ボタンだけだと思うけど)
# リソースエディタ上ではアイコンが表示されていますけど。
(WindowsXP Pro SP2/VC++6.0 Enter SP6/MFC Application ダイアログ)
デフォルトでないっていうのを明確にしてもらえますか?
(というか一番最初にMFCなのかどうかの情報も加えて明記してもらいたい)
ダイアログじゃなくてSDIとかだったりして
>ダイアログをリソースに追加して、ClassWizardでダイアログクラスを作って、
デフォルトではないとはこのことです。
>方法は二つある
>1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); を消せば表示しない。
>2.OnInitDialog()中で次の2行を消せばよいと思う。
> SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
> SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
ダイアログを追加した場合、上記1.2の記述はないと思うんですが・・・
>メニューに対しての設定を変更したい場合は、OnInitDialog()で以下のところを変更す
>ればよい。
>CMenu* pSysMenu = GetSystemMenu(FALSE);
>if (pSysMenu != NULL){
> // メニュー追加、削除処理
>}
こっちのほうでできるんですか?
>2.OnInitDialog()中で次の2行を消せばよいと思う。
> SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
> SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
これはやってみましたか?
デフォルトじゃなくてもこれで解決するはずですが。
>1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
こっちはアイコンをロードしてるだけです。
>これはやってみましたか?
>デフォルトじゃなくてもこれで解決するはずですが。
デフォルトじゃない場合、
OnInitDialog()はクラスウィザードで自分で関数を生成するから、内部には、自分で書
かないと何も記述されてないですよ?
おかしいですね。
本当に 実行時 にアイコンが表示されますか?
~~~~~~
(ダイアログの編集画面ではないですよ?)
私の環境(WindowsXP Pro SP2/VC++6.0 Enter SP6/MFC Application ダイアログ)
ではアイコンはでません。
あなたの環境をもう少し具体的にしてください。
> ダイアログをリソースに追加して、ClassWizardでダイアログクラスを作って、
> それをDoModalで表示してみたけど、アイコンは表示されていませんよ。
私も確認できました。
で、大三元さん、試しに新規プロジェクトでアイコンが表示されるか
やってみてはどうですか?
境界線を「細枠」や「サイズ変更枠」にすると、
アイコンが出ますけど、なってますか?
>本当に 実行時 にアイコンが表示されますか?
MFCと書いてあるデフォルトのアイコンではなくて、Windowsのプロンプトみたいなアイ
コンがでてます。
環境は XP Home SP2 VC6.0-SP6です。
消したいアイコンがあるダイアログはモードレスです。
>境界線を「細枠」や「サイズ変更枠」にすると、
>アイコンが出ますけど、なってますか?
なってます。
ちなみにデフォルトダイアログクラスの
OnInitDialog()のSetIcon2行を消したら、
アイコンは出なくなりました。
> なってます。
こういう情報は一番最初に言うべきです。
何にも書かなければデフォルトだと思うのが普通でしょう?
とりあえず、AppendMenuで必要なシステムメニューを追加して回避する方法。
境界線を「ダイアログ枠」に変更
OnInitDialogに
CMenu* pMenu = this->GetSystemMenu( FALSE );
if ( pMenu )
{
pMenu->AppendMenu( MF_STRING, SC_SIZE, サイズ変更(&S) );
this->ModifyStyle( 0, WS_THICKFRAME );
}
を追加。
ModifyStyleの位置がおかしいかも。
参考)
■ ボタンによって、ウインドウスタイルを変更するには?
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200310_03100031.html