gpt4 book ai didi

C++ Win32 背景图像

转载 作者:行者123 更新时间:2023-11-28 02:42:17 24 4
gpt4 key购买 nike

看了一些背景绘制教程,还是不会画背景;它总是白色的。我的资源已经在项目中。我尝试了一些其他方法,改用 paint,但它仍然无法绘制背景图像。

#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 消息。你通过绘制你的位图来响应它(例如,使用 BitBltStretchBlt),然后你返回 TRUE(或任何其他非零值) 告诉 DefWindowProc 背景已经被删除,所以它不应该尝试删除它。

请注意,如果您在 MDI 程序中执行此操作,则需要在 MDI 客户端窗口中执行此操作。使用 MDI,您有一个父窗口、一个客户端窗口和一些 MDI 子窗口。看起来像主窗口背景的部分实际上被 MDI 客户端窗口占据了,所以这就是您需要绘制背景的地方。

关于C++ Win32 背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com