0

我有一个带有列表框、滑块和按钮的对话框。我试图改变背景颜色但我无法改变它,所以我想如果我添加一个“图片控件”作为位图并将它放在背景中我会成功,但现在问题是“图片控件”位于所有控件之上。

我尝试使用 Ctrl+d 更改选项卡控件,但它没有改变任何内容。我也尝试使用 SetWindowPos 到顶部或底部,但它也没有改变任何东西。

我注意到,如果我单击按钮的位置,它会按照我的意愿被带到前面。有没有办法在开始时“单击”所有控件?为了将控制权带到顶部,我是否错过了什么?

4

2 回答 2

1

如果你需要改变对话框的背景颜色,你需要处理WM_CTLCOLORDLG消息并将句柄返回给一个画笔(如果画笔不是股票对象,请确保在对话框关闭后删除画笔) -- 或者,您可以自己处理WM_ERASEBKGND 消息并擦除背景。

于 2013-06-12T13:58:00.563 回答
0

我尝试使用 Ctrl+D 更改选项卡控件,但它没有改变任何内容。我也尝试使用 SetWindowPos 到顶部或底部,但它也没有改变任何东西。

Ctrl+D确实让您进入重新排序模式,但是有一种更可靠的检查方式。对话框模板是 .RC 文件中的文本形式,您可以在其中使用文本编辑器查看控制顺序并按照您希望的方式手动对行进行排序。这将是控件创建的顺序和选项卡顺序。有时以这种方式重新排序控件甚至更容易。

更重要的是,当您的应用程序运行时,Spy++ SDK 工具可以枚举窗口,并再次为您提供窗口顺序以供检查。

SetWindowPos使用适当的参数也会在运行时更改控件的 Z 顺序。

于 2013-07-12T07:36:02.713 回答