我是 StackOverflow 的新手,所以请原谅我在帖子中犯的任何愚蠢错误。
我在使用 Win32 API(无 MFC)和基于对话框的应用程序创建具有位图背景的无边框窗口时遇到问题。我正在使用视觉工作室 2010。
只有当我使用 Windows XP 视觉样式时,才会出现此问题,方法是将公共控件库与以下代码段链接:
#pragma comment(linker, \
"\"/manifestdependency:type='Win32' "\
"name='Microsoft.Windows.Common-Controls' "\
"version='6.0.0.0' "\
"processorArchitecture='*' "\
"publicKeyToken='6595b64144ccf1df' "\
"language='*'\"")
我有一个简单的对话框,里面有一个带有位图图像的 PictureControl,它将成为窗口的背景。我希望这张图片填满整个窗口,不需要调整大小或拖放,所以我只是把它放在屏幕中央,并在我的 RC 文件中定义对话框和优化校准尺寸相同,如下所示(尺寸均为 356、210):
//Main Dialog
IDD_DIALOG_MAIN DIALOGEX 0, 0, 356, 210
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
//Picture Control
CONTROL 103,IDC_PB_SPLASH,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE,0,0,356,210
DEFPUSHBUTTON "OK",IDOK,152,169,50,14
END
现在的问题是,当我使用视觉样式时,图像不会填满对话框窗口的整个区域。在对话框的两侧可以看到一个小的空白区域(如果删除 SS_CENTERIMAGE 它是右侧的空白区域)。没有视觉样式就不会发生这种情况。下面的图片显示了问题(那里使用的图像只是一个例子,实际的背景图像更复杂,所以只用画笔绘画不是一种选择)
没有视觉样式 http://postimg.org/image/hji8sa6j1/
使用视觉样式 http://postimg.org/image/b733ig3gt/
抱歉链接,仍然没有足够的声誉来发布图片。
关于如何使位图在启用视觉样式的情况下填充整个窗口的任何建议?我找到了这个很好的答案https://stackoverflow.com/a/17713810/3022281 by melak47 来制作一个无边框窗口,但它不是基于对话框的。如果没有其他办法,我想我将不得不采用该解决方案。