0

COLORREF次のコードを使用して、デフォルトの Windows システムの背景色を形式で取得しようとしています。

 LOGBRUSH lb;
 GetObject((HANDLE)(COLOR_BACKGROUND), sizeof(LOGBRUSH), &lb);
 BG_COLOR = lb.lbColor;
 char buff[250];
 sprintf(buff, "BG_COLOR: 0x%08X;", BG_COLOR);
 MessageBoxA(0, buff, "Alert!", MB_OK | MB_SYSTEMMODAL);

ただし、ウィンドウのクラスを次のように設定している間、0x003E28F4どちらがかを返します。hbrBackground(HBRUSH)COLOR_BACKGROUND

WndClass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;

ウィンドウの背景色は、灰色(WinXP の場合) と 16 進数0x00C8D0D4(gimp で確認) で表示されます。

私の知る限り、同じでは0x003E28F4あり0x00C8D0D4ません

これは何が原因ですか?デフォルトの背景色を RGB/COLORREF 形式で取得するにはどうすればよいですか?

4

1 に答える 1

3

使うべきではありませんかGetSysColor(COLOR_BACKGROUND)

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

于 2013-03-08T17:10:20.473 に答える