1

画像コントロールを追加して、その中にいくつかのビットマップ画像を表示したいアプリケーションがあります。ただし、画像コントロールに制御変数を追加することはできません。

最初は、変数を追加することすらできませんでした。enum {IDD = ID_OF_MY_DIALOG;}ヘッダーファイルに行がなかったからです。それを私が直した。ただし、現在、制御変数を追加することはできません。画像コントロールを右クリックし、[変数の追加]行をクリックすると、[変数のコントロール]チェックボックスを選択できません。

プロジェクトに制御変数を追加するにはどうすればよいですか、ビットマップを動的に表示するにはどうすればよいですか、またはここでのエラーは何ですか?

いくつかのMFCアプリケーションをテストし、制御変数の部分を見ました。ですから、私のプロジェクトには何かが欠けているに違いありません。

これが私のスクリーンショットです:

ATLプロジェクトに可変画面を追加する

ランダムなMFCプロジェクトに可変画面を追加する

どうもありがとうございます。

4

1 に答える 1

2

STATICダイアログテンプレートにコントロールを追加したとします。テンプレートエディタのすぐそこにあるコントロールプロパティで、識別子を割り当てることができますIDC_PICTURE。そこから-コントロールは実行時にすでに作成されています。コードではCWindow変数を追加し、OnInitDialogハンドラー(すでに持っていると思います-AFAIRはデフォルトで作成され、さまざまなサンプルが存在します)でメンバー変数の初期化を追加するので、コードでさらに使用できるようになりますメッセージ処理のように。

class CMainDialog :
    public CDialogImpl<CMainDialog>
{
// ...
private:
    CWindow m_PictureStatic;
    HBITMAP m_hPictureBitmap;

// Window Message Handlers
    LRESULT OnInitDialog(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        m_PictureStatic = GetDlgItem(IDC_PICTURE);
        m_hPictureBitmap = LoadBitmap(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDB_PICTURE));
        ATLASSERT(m_hPictureBitmap);
        m_PictureStatic.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) m_hPictureBitmap);
        // ...
    }
    LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        ATLVERIFY(DeleteObject(m_hPictureBitmap));
        return 0;
    }

画像自体は(このコードスニペットでは、他のオプションがある可能性があります)識別子を持つビットマップリソースIDB_PICTUREです。コードはリソースからビットマップをロードし、それをコントロールに渡します。

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

PictureStaticを追加する前のソースコード+ソースコード。

于 2012-09-10T13:01:38.650 に答える