2

WNDCLASS と hbrBackground プロパティをビットマップに次のように入力しました

wc.hbrBackground = CreatePatternBrush( LoadBitmap( hInstance, MAKEINTRESOURCE( "grey-texture.bmp" ) ) );

これはまったく変わっていないようです。ウィンドウはデフォルトのように白いので、ここで何が起こっているのかを調べる必要があります。CreatePatternBrush は、こ​​のようなものに使用する正しい関数ではありませんか? このような形でできなかったのでしょうか。

hbrBackground = fromimagefile(文字列ビットマップ、ブール タイル);

4

3 に答える 3

2

次のページを参照してください。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162462(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183508(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633576(v=vs.85).aspx

ブラシには、論理ブラシと物理ブラシの 2 種類があります。CreatePatternBrush は論理ブラシを作成しますが、RegisterClass は物理ブラシを必要とします。

于 2012-10-13T11:39:55.010 に答える
1

RC ファイルにリソースを挿入するときは、文字列または int で名前を付けることができますが、内部的にリソースは文字列を使用してリソースを処理します。そのため、int (実際には int に定義された ID resource.h) で名前を付ける場合、そのような ID (整数 ID) で名前を付けたリソースがある場合は、 を使用MAKEINTRESOURCEしてその ID を に変換し、LPCTSTRそれを に渡す必要があります。そのリソースをロードする関数ですが、あなたのケースでは文字列を渡しているので、使用して覚えて"grey-texture.bmp"おくべきではありません。これは、エグゼクティブまたはDLLにマージされた「.res」ファイルからリソースをロードするように設計されており、ディスクにファイルをロードできません!!MAKEINTRESOURCELoadBitmap

于 2012-10-13T11:56:57.800 に答える
0

コードは各ステップでエラーをチェックする必要があります。以下は生のサンプルです。

HBITMAP hbmp = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
if(NULL == hbmp)
{
    MessageBox(NULL,"BitMap Loading Failed.","Error",MB_ICONEXCLAMATION | MB_OK);
}
else
{
    HBRUSH hbr = CreatePatternBrush(hbmp);
    if(NULL == hbr)
    {
        MessageBox(NULL,"Brush Creation Failed.","Error",MB_ICONEXCLAMATION | MB_OK);
    }
    else
    {
        wc.hbrBackground = hbr;
    }
}

その後、再度結果を返信してください。あなたのLoadBitmap機能が動作するかどうかはわかりません。BigBossが言ったように、通常は resource.h を使用してこれらを処理します。これを最初から学びたい場合は、Forger のチュートリアルを読むことをお勧めします。

于 2012-10-13T12:07:00.570 に答える