モーダルダイアログボックス内にアイコンを表示する

O.ベンツ

私はMFCにまったく慣れておらず、この問題に数日間取り組んでいますが、機能する解決策が見つかりません。

問題:

.rcファイル(以下のコード)で定義されたスタイルのダイアログクラス(モーダルダイアログボックス)があり、別のクラス(OtherClass.rc)からアイコンのリソースID(int m_iconと同じ)を取得しますIDR_MAINFRAMEダイアログボックス内のすべてのテキスト情報は動的に設定されますが(以下のコード)、同じことはアイコンでは機能しません。下の画像でマークされたアイコンは、私が設定しようとしているものです。

アイコンリソースは別の.rcファイルで定義されており、ウィンドウの左上に小さなアイコンを設定できるため、LoadImageが機能しているようです。唯一の問題は、この画像に大きなアイコンを設定することです。(まったく表示されていません。空のスペースだけです)

ここに画像の説明を入力してください

OtherClass.rc

IDR_MAINFRAME           ICON                    "res\\MyIcon.ico"

Dialog.rc

ABOUTBOX DIALOGEX 0, 0, 285, 77
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "<<Aboutbox>>"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
    ICON            ABOUT_ICON, ABOUT_ICON, 11, 10, 21, 20
    LTEXT           "", IDC_STATIC, 40, 10, 163, 8, SS_NOPREFIX
    LTEXT           "<<Package Name 1.00>>", ABOUT_NAME, 40, 20, 163, 8, SS_NOPREFIX
    LTEXT           "<<FileName>>", ABOUT_FILENAME, 40, 30, 163, 8, SS_NOPREFIX

    DEFPUSHBUTTON   "OK", IDOK, 217, 7, 60, 14, WS_GROUP
END

Dialog.cpp

BOOL AboutDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Window Title
    SetWindowText(L"About " + m_title);

    // Set Icon
    HICON hIcon = (HICON)LoadImage(GetModuleHandleW(NULL), MAKEINTRESOURCE(m_icon), IMAGE_ICON, 96, 96, LR_DEFAULTCOLOR);
    
    SetIcon(hIcon, TRUE);
    SetIcon(hIcon, FALSE);
    
    // Text
    SetDlgItemText(ABOUT_NAME, m_name);
    SetDlgItemText(ABOUT_FILENAME, m_filename);
    
    return TRUE;
}

私が試したことは次のとおりです。

1. GetDlgItem(ABOUT_ICON)->SetIcon(hIcon, TRUE);
2. SendMessage(WM_SETICON, ICON_BIG, (LPARAM)hIcon);

これらの線に沿ってさらに多くのものがありますが、アイコンスペースは空のままです。どちらLoadImageGetDlgItem(ABOUT_ICON)リターンnullptr(すでにチェック)。

アンディ

アイコンを表示するために、SetIconまたはのようなことをする必要はありませんSendMessage何が問題なのかは、RCファイルが間違っていることです。次のようになります。

ABOUTBOX DIALOGEX 0, 0, 285, 77
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "<<Aboutbox>>"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
    ICON            ABOUT_ICON, IDC_STATIC, 11, 10, 21, 20
    LTEXT           "", IDC_STATIC, 40, 10, 163, 8, SS_NOPREFIX
    LTEXT           "<<Package Name 1.00>>", ABOUT_NAME, 40, 20, 163, 8, SS_NOPREFIX
    LTEXT           "<<FileName>>", ABOUT_FILENAME, 40, 30, 163, 8, SS_NOPREFIX

    DEFPUSHBUTTON   "OK", IDOK, 217, 7, 60, 14, WS_GROUP
END

ICON行の後のBEGIN行を見てください

あなたはそれをとして持っていましたABOUT_ICON, ABOUT_ICON, 11, 10, 21, 20が、2番目のパラメーターはフレームワークにコントロールのIDが何であるかを伝えます。あなたがしたいのでStaticコントロールを、あなたはのIDを使用IDC_STATICIDがないフレームワークを伝えたが、代わりにそれは一般的な作成する必要がありますStaticコントロールを。

これで問題が解決しない場合ABOUT_ICONは、正しく配線されているかどうか、実際にアイコンを指しているかどうかを調査します。

また、なぜRCファイルで作業しているのですか?MFCは優れたGUIエディターを提供します。たとえば、UIを使用して変更できます。

MFC

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

モーダルダイアログボックスを表示するTeamCity

分類Dev

モーダルダイアログ内にマット選択を表示する

分類Dev

jQueryダイアログボックス内でASPコントロールを使用する方法は?

分類Dev

WinAPI最初のダイアログボックスのボタンコントロールをクリックして最初のダイアログボックスを破棄した後、2番目のダイアログボックスを作成する

分類Dev

リンクがクリックされたときに表示されるモーダルダイアログと、window.locationを指すボタン

分類Dev

アプリケーションで3日に1回ダイアログボックスを表示する方法

分類Dev

ReactJSでモーダルダイアログボックスを表示するにはどうすればよいですか?

分類Dev

ウェイターのダイアログボックス内のボタンをクリックする方法

分類Dev

非モーダルブートストラップダイアログボックスを作成する方法

分類Dev

セレンを使用してダイアログボックスを下にスクロールする方法

分類Dev

if / elseステートメントに基づくダイアログボックスを表示する

分類Dev

エラーメッセージダイアログボックスの後に入力ダイアログボックスを表示する

分類Dev

Symfony:アクセスが拒否されたときにjQueryモーダルダイアログを表示する

分類Dev

MFCダイアログボックスにコンボボックスを設定する

分類Dev

Elmモーダルダイアログボックス

分類Dev

whileループは、ボタンをクリックするとデータベースの最後の行のみを表示します[モーダルダイアログを表示するには]

分類Dev

分度器:モーダルダイアログ(角度要素)のボタンをクリックする方法

分類Dev

ユーザーがJQueryUIでモーダルダイアログボックスの外側をクリックしたときにモーダルダイアログが閉じないようにするにはどうすればよいですか?

分類Dev

「ダイアログボックスで「キャンセル」をクリックすると、ダイアログボックスが閉じ、フィールドに何も表示されません。」というコードを記述するにはどうすればよいですか。

分類Dev

VBAコマンドを使用してソルバーダイアログボックスを操作する

分類Dev

分度器でモーダルダイアログボックスを処理する方法は?

分類Dev

Seleniumでモーダルダイアログボックスを処理する方法は?

分類Dev

キャンバス内でのモーダルダイアログボックスの配置

分類Dev

Outlook 2013VBAモードレスダイアログボックスを表示する方法

分類Dev

ページをリロードせずにダイアログボックスにデータを表示する

分類Dev

[ファイルのダウンロード]ダイアログボックスを使用せずに、WebBrowserコントロールを使用してファイルをダウンロードするにはどうすればよいですか?

分類Dev

Bash-操作中にダイアログ情報ボックスを表示する

分類Dev

入力ダイアログボックスに図を表示するmatlab

分類Dev

Windowsエラーダイアログボックスで完全なファイルパスを表示する

Related 関連記事

  1. 1

    モーダルダイアログボックスを表示するTeamCity

  2. 2

    モーダルダイアログ内にマット選択を表示する

  3. 3

    jQueryダイアログボックス内でASPコントロールを使用する方法は?

  4. 4

    WinAPI最初のダイアログボックスのボタンコントロールをクリックして最初のダイアログボックスを破棄した後、2番目のダイアログボックスを作成する

  5. 5

    リンクがクリックされたときに表示されるモーダルダイアログと、window.locationを指すボタン

  6. 6

    アプリケーションで3日に1回ダイアログボックスを表示する方法

  7. 7

    ReactJSでモーダルダイアログボックスを表示するにはどうすればよいですか?

  8. 8

    ウェイターのダイアログボックス内のボタンをクリックする方法

  9. 9

    非モーダルブートストラップダイアログボックスを作成する方法

  10. 10

    セレンを使用してダイアログボックスを下にスクロールする方法

  11. 11

    if / elseステートメントに基づくダイアログボックスを表示する

  12. 12

    エラーメッセージダイアログボックスの後に入力ダイアログボックスを表示する

  13. 13

    Symfony:アクセスが拒否されたときにjQueryモーダルダイアログを表示する

  14. 14

    MFCダイアログボックスにコンボボックスを設定する

  15. 15

    Elmモーダルダイアログボックス

  16. 16

    whileループは、ボタンをクリックするとデータベースの最後の行のみを表示します[モーダルダイアログを表示するには]

  17. 17

    分度器:モーダルダイアログ(角度要素)のボタンをクリックする方法

  18. 18

    ユーザーがJQueryUIでモーダルダイアログボックスの外側をクリックしたときにモーダルダイアログが閉じないようにするにはどうすればよいですか?

  19. 19

    「ダイアログボックスで「キャンセル」をクリックすると、ダイアログボックスが閉じ、フィールドに何も表示されません。」というコードを記述するにはどうすればよいですか。

  20. 20

    VBAコマンドを使用してソルバーダイアログボックスを操作する

  21. 21

    分度器でモーダルダイアログボックスを処理する方法は?

  22. 22

    Seleniumでモーダルダイアログボックスを処理する方法は?

  23. 23

    キャンバス内でのモーダルダイアログボックスの配置

  24. 24

    Outlook 2013VBAモードレスダイアログボックスを表示する方法

  25. 25

    ページをリロードせずにダイアログボックスにデータを表示する

  26. 26

    [ファイルのダウンロード]ダイアログボックスを使用せずに、WebBrowserコントロールを使用してファイルをダウンロードするにはどうすればよいですか?

  27. 27

    Bash-操作中にダイアログ情報ボックスを表示する

  28. 28

    入力ダイアログボックスに図を表示するmatlab

  29. 29

    Windowsエラーダイアログボックスで完全なファイルパスを表示する

ホットタグ

アーカイブ