有没有什么好的教程或者方法可以将背景图片添加到Windows DialogBox中?
类似于下面的内容:

我的资源文件(稍微修剪了一下):
#include <afxres.h>
#include "WindowSettings.h" // for IDC_?, IDD_DLG
// Dialog Box Template for IDD_DLG
//
IDD_DLG DIALOGEX 200, 100, 200, 350
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DLG_NAME
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
LTEXT "Display Device", IDC_STATIC, 10, 5, 50, 10
COMBOBOX IDC_DIS, 10, 15, 180, 64, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Resolution", IDC_STATIC, 10, 35, 50, 10
COMBOBOX IDC_RES, 10, 45, 180, 50, CBS_DROPDOWNLIST | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Go", IDC_GO, 40, 205, 50, 15, WS_DISABLED
PUSHBUTTON "Cancel", IDCANCEL, 110, 205, 50, 15
END发布于 2010-12-09 14:37:09
发布于 2010-12-09 17:48:37
实际上,只有一种实际的方法可以做到这一点。在资源编辑器中添加静态图像控件是一件痛苦的事情,因为图像需要调整大小以覆盖整个对话框,这使得对话框几乎不可能被编辑,因为所有的单击都将在图像控件上进行。
您可以将图像控件的创建推迟到WM_INITDIALOG,但是反对使用控件的第二个标志是窗口控件在重叠时不能优雅地绘制。
因此,您需要手动执行此操作,将位图加载到WM_INITDIALOG中,存储HBITMAP,并将其绘制在WM_ERASEBKGND消息上。
如果你另外转换HBITMAP到HBRUSH,你可以处理WM_CTLCOLORSTATIC (和其他WM_CTLCOLORxxx)消息并从消息中返回HBRUSH,这将在任何非矩形控件下绘制位图,因此,根据您的" after“屏幕截图,后面的文本将是位图背景上的黑色文本。
最后一个问题是,如果对话框是可调整大小的,它将闪烁。有一些方法可以尝试解决这个问题,但没有一个方法是100%成功的:
https://stackoverflow.com/questions/4395515
复制相似问题