Vin*_*igi 11 windows winapi createwindow
我在Windows Vista上使用C++中的VS2005创建了一个带有createwindow()api的窗口
我的要求是在该窗口上绘制一个图像(任何格式).我在这个应用程序中没有使用任何MFC.
ser*_*nko 27
不确定你的问题是什么:在表单上绘制位图,或者你想知道如何使用各种图像格式,或两者兼而有之.无论如何,下面是一个如何加载位图并在表单上绘制它的示例:
HBITMAP hBitmap = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message)
{
<...>
case WM_CREATE:
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bitmap;
HDC hdcMem;
HGDIOBJ oldBitmap;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = SelectObject(hdcMem, hBitmap);
GetObject(hBitmap, sizeof(bitmap), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
LoadImage加载图标,光标,动画光标或位图.细节在这里
对于使用各种图像格式,您可以使用Windows Imaging Component(请参阅IWICBitmapDecoder)或此处的代码加载JPEG和GIF图片或第三方工具,如FreeImage或LeadTools
希望这有帮助,问候
void LoadScreen(HWND hWnd) {
RECT rect;
HDC hdc = GetDC(hWnd);
HBRUSH brush = CreatePatternBrush((HBITMAP)LoadImage(NULL, L"file.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
GetWindowRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
ReleaseDC(hWnd, hdc);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41048 次 |
| 最近记录: |