0

さて、 RCファイルにボタンを作成せずに、テキストに沿ってボタンに画像を追加したいと思います。これは可能ですか、またはボタンに画像を配置できるようにするためにRCファイルを使用する必要がありますか? 私の画像は#define「resource.h」にあり、画像は「resources.rc」で宣言されています。「main.cpp」と「resources.rc」の両方に「resource.h」ヘッダーが含まれています。リソースを使用してボタンを作成したくありませんが、画像とテキストを使用してボタンを作成する唯一の方法である場合はそれを行います。私が知る必要があるのは、WinAPI でボタンに画像を配置する方法だけです。

4

1 に答える 1

0

アップデート:

  1. マニフェスト ファイルをアプリケーションに追加します。マニフェスト ファイルには名前を付ける必要がありますYourApp.exe.manifest

  2. これをマニフェスト ファイルに追加します (マニフェスト ファイルの詳細はこちらhttp://msdn.microsoft.com/en-us/library/bb773175%28VS.85%29.aspx ):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        version="1.0.0.0"
        processorArchitecture="*"
        name="CompanyName.ProductName.YourApplication"
        type="win32"
    />
    <description>Your application description here.</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="*"
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    </assembly>
    
  3. アプリケーションをリンクするComCtl32.lib

  4. アプリケーション リソース ファイルにマニフェストを追加するCREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

  5. InitCommonControls()WinMain の先頭で呼び出す

更新を終了

  1. ボタン作成 (IMAGE + TEXT) のサンプル コード、LoadBitmap が原因でメモリ リークが発生しやすい:

    HWND hwnd_button = CreateWindowEx(
            0,
            "BUTTON", //ascii
            "Button text",
            WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
            10, 
            145,
            50,
            50,
            hwnd_parent,
            NULL,
            //GetModuleHandle(NULL)
            (HINSTANCE)GetWindowLong(hwnd_parent, GWL_HINSTANCE),
            NULL);
    
    SendMessage((HWND) m_hWndButton,
            (UINT) BM_SETIMAGE,
            (WPARAM) IMAGE_BITMAP,
            (LPARAM) LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1)));
    
于 2012-11-27T15:49:39.783 に答える