C++Win32背景图像
C++ Win32 Background Image
我看过一些背景绘制教程,但仍然无法绘制背景;它总是白色的。我的资源已经在项目中了。我尝试了其他一些方法,用油漆代替,但它仍然无法绘制背景图像。
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HWND hProgress, hWndBottom;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hInst = hInstance;
MSG msg = {0};
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = CreatePatternBrush( LoadBitmap( hInstance, MAKEINTRESOURCE(IDB_BG) ));//(HBRUSH)(COLOR_BACKGROUND);
wc.lpszClassName = "Test";
if( !RegisterClass(&wc) )
return 1;
if( !CreateWindow(wc.lpszClassName,
"Tests",
WS_POPUPWINDOW|WS_VISIBLE, //WS_OVERLAPPEDWINDOW|WS_VISIBLE
1,1,200,250,0,0,hInstance,NULL))
return 2;
while( GetMessage( &msg, NULL, 0, 0 ) > 0 )
DispatchMessage( &msg );
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//Make TopMost
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
switch(message)
{
case WM_CREATE:
{
hProgress = CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE | PBS_SMOOTH,
10, 190, 170, 10,
hWnd, NULL, hInst, NULL);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
如果要为背景绘制位图,只需将背景笔刷设置为位图的句柄即可。
相反,您将背景笔刷设置为NULL,并处理WM_ERASEBKGND
消息。您通过绘制位图(例如,使用BitBlt
或StretchBlt
)来响应它,然后返回TRUE
(或任何其他非零值)来告诉DefWindowProc
背景已被擦除,因此它不应该尝试擦除它。
请注意,如果在MDI程序中执行此操作,则需要在MDI客户端窗口中执行。使用MDI,您有一个父窗口、一个客户端窗口和一些MDI子窗口。主窗口的背景实际上被MDI客户端窗口占据了,所以这就是你需要在背景中绘制的地方。
相关文章:
- 在 Visual C++ 中以编程方式更改按钮的背景图像
- 如何设置与其背景图像大小相对应的窗口大小?
- 同一图像中的反转文本和背景颜色
- 如何在QT中设置样式表以选择假发背景的随机图像
- 具有SPI_SETDESKWALLPAPER功能的程序仅在尝试使用C++将其更改为图像时将桌面背景更改为黑色
- 无法将图像保存在具有白色背景的JPG中 OpenCV
- QDialog - 设置背景图像
- 在 qlabel 中将图像设置为背景并在其顶部设置文本
- 为背景图像设置比例
- 将图像设置为Drawingarea的背景
- 为qlineedit设置了背景图像时,如何在qlineedit中设置文本颜色
- 打开不同的图像文件,并使用GDI 库在主应用程序窗口的背景上绘制它们
- 如何让 WNDCLASS 将位图图像作为背景
- 直接X背景图像
- 在 MFC 窗口中使用 PNG 作为背景图像
- 有没有一种算法可以使用opencv来分离图像的前景和背景
- 在屏幕上绘制图像后背景发生变化
- QPushButton的Qt背景图像
- 黑色背景,图像在中心使用 GDI
- 使用C++/OpenCV或Matlab将图像的白色背景替换为透明背景