くだすれVisual C++(超初心者用)その3
■ このスレッドは過去ログ倉庫に格納されています
0090デフォルトの名無しさん
2006/06/19(月) 16:12:58実行するとデスクトップの色に関わらずRGB(255,255,255)と表示されます。
いったん、デスクトップのコンパチブルDCを作成してそこにBitBltし、
そのコンパチブルDCの座標をGetPixelというちょっと面倒な事をしています。何が原因なんでしょうか。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
static HDC hDCDesktop;
HDC hDCTemp;
TCHAR s[80];
COLORREF clr;
int ix = 200, iy = 200;//任意の座標(200,200)
switch(message){
case WM_KEYDOWN:
hDCDesktop = GetDC(0); //デスクトップのDC
hDCTemp = CreateCompatibleDC(hDCDesktop); //デスクトップのコンパチブルDC
BitBlt(hDCTemp, 0, 0, 500, 500, hDCDesktop, 0, 0, SRCCOPY);
clr = GetPixel(hDCTemp, ix, iy);
ReleaseDC(0, hDCTemp);
ReleaseDC(0, hDCDesktop);
wsprintf(s, "COLOR: R [%d] G[%d] B[%d]",
GetRValue(clr), GetGValue(clr), GetBValue(clr));
MessageBox(hWnd, s, "CHECK", MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
■ このスレッドは過去ログ倉庫に格納されています