ダイアログのシステムメニューで、アイコンはつけないで×「閉じる」ボタンだけつけるには? – プログラミング – Home

ダイアログのシステムメニューで、アイコ...
 
通知
すべてクリア

[解決済] ダイアログのシステムメニューで、アイコンはつけないで×「閉じる」ボタンだけつけるには?

固定ページ 1 / 2

大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

環境は
VC++6.0 Windows XPです。
過去ログに同じものがあったのですが、
解決してませんでした。
バツボタンだけが欲しいのですが・・・


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

過去ログ
ダイアログの左端のアイコンを非表示にするには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200102/01020001.txt


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

この過去ログだとデフォルトのダイアログのシステムメニューの場合だと思います。
僕のはデフォルトではないので、
LoadIconなどのスケルトン記述はありません。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> 僕のはデフォルトではないので、

ダイアログをリソースに追加して、ClassWizardでダイアログクラスを作って、
それをDoModalで表示してみたけど、アイコンは表示されていませんよ。
(CAboutDlgも×ボタンだけだと思うけど)
# リソースエディタ上ではアイコンが表示されていますけど。
(WindowsXP Pro SP2/VC++6.0 Enter SP6/MFC Application ダイアログ)

デフォルトでないっていうのを明確にしてもらえますか?
(というか一番最初にMFCなのかどうかの情報も加えて明記してもらいたい)


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

ダイアログじゃなくてSDIとかだったりして


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>ダイアログをリソースに追加して、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){
> // メニュー追加、削除処理
>}
こっちのほうでできるんですか?


返信引用
いろは
 いろは
(@いろは)
ゲスト
結合: 21年前
投稿: 43
 

>2.OnInitDialog()中で次の2行を消せばよいと思う。
> SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
> SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定

これはやってみましたか?
デフォルトじゃなくてもこれで解決するはずですが。

>1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

こっちはアイコンをロードしてるだけです。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>これはやってみましたか?
>デフォルトじゃなくてもこれで解決するはずですが。
デフォルトじゃない場合、
OnInitDialog()はクラスウィザードで自分で関数を生成するから、内部には、自分で書
かないと何も記述されてないですよ?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

おかしいですね。
本当に 実行時 にアイコンが表示されますか?
    ~~~~~~
(ダイアログの編集画面ではないですよ?)

私の環境(WindowsXP Pro SP2/VC++6.0 Enter SP6/MFC Application ダイアログ)
ではアイコンはでません。
あなたの環境をもう少し具体的にしてください。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> ダイアログをリソースに追加して、ClassWizardでダイアログクラスを作って、
> それをDoModalで表示してみたけど、アイコンは表示されていませんよ。

私も確認できました。
で、大三元さん、試しに新規プロジェクトでアイコンが表示されるか
やってみてはどうですか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

境界線を「細枠」や「サイズ変更枠」にすると、
アイコンが出ますけど、なってますか?


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>本当に 実行時 にアイコンが表示されますか?
MFCと書いてあるデフォルトのアイコンではなくて、Windowsのプロンプトみたいなアイ
コンがでてます。

環境は XP Home SP2 VC6.0-SP6です。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

消したいアイコンがあるダイアログはモードレスです。

>境界線を「細枠」や「サイズ変更枠」にすると、
>アイコンが出ますけど、なってますか?
なってます。
ちなみにデフォルトダイアログクラスの
OnInitDialog()のSetIcon2行を消したら、
アイコンは出なくなりました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> なってます。
こういう情報は一番最初に言うべきです。
何にも書かなければデフォルトだと思うのが普通でしょう?

とりあえず、AppendMenuで必要なシステムメニューを追加して回避する方法。

境界線を「ダイアログ枠」に変更
OnInitDialogに

CMenu* pMenu = this->GetSystemMenu( FALSE );
if ( pMenu )
{
pMenu->AppendMenu( MF_STRING, SC_SIZE, サイズ変更(&S) );
this->ModifyStyle( 0, WS_THICKFRAME );
}

を追加。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

ModifyStyleの位置がおかしいかも。

参考)
■ ボタンによって、ウインドウスタイルを変更するには?
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200310_03100031.html


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました