怎么更改MessageBox的背景色

时间:2021-04-28 14:47:40
一个MessageBox,用钩子得到了其Handle,用WinAPI可以做SetFont、CreateWindowEx等。但是就是不能设置其背景色,用SetBkColor不起作用,不管用GetDC、GetWindowDC还是Graphics.FromHwnd().GetHdc()都不行。有谁知道该怎么设置窗体的背景色吗?

22 个解决方案

#1


期待中

#2


消息框也是form窗体吧?那在其属性里面就有的

#3


有那功夫自己搞个窗体比它强多了

#4


都用到钩子了,这个窗体是你自己的吗?如果是还是自己做一个吧。在外面设置另一个窗体的属性没弄过。

#5


引用 2 楼  的回复:
消息框也是form窗体吧?那在其属性里面就有的


这不是继承Form的,没有属性

#6


引用 3 楼  的回复:
有那功夫自己搞个窗体比它强多了


不是我做的,我只是接手。

#7


直接用窗体,MessageBox太简单了。

#8


引用 4 楼  的回复:
都用到钩子了,这个窗体是你自己的吗?如果是还是自己做一个吧。在外面设置另一个窗体的属性没弄过。


它原来的架构就是这样的,我不想动了,想办法家东西就好。

#9


.net内置的类,不能更改的,自己做一个窗体吧,很简单的。

#10


WM_ERASEBKGND
WM_PAINT
WM_NCPAINT

这些系统事件处理后,你再重新覆盖绘制

#11


该回复于2012-04-20 16:13:22被版主删除

#12


引用 10 楼  的回复:
WM_ERASEBKGND
WM_PAINT
WM_NCPAINT

这些系统事件处理后,你再重新覆盖绘制


有什么办法知道事件处理完吗?

#13


自己写一个!

#14


我知道自己写最好,但不被允许,只能在原来的基础上改。

#15


引用 14 楼  的回复:
我知道自己写最好,但不被允许,只能在原来的基础上改。


还有这样的要求?

#16


本帖最后由 caozhy 于 2012-04-16 22:13:03 编辑
MessageBox在不同版本的Windows上都不同,比如Windows 7是上面白色,下面窗口颜色,在Windows XP下,为单一的窗口颜色。所以自定义它是很愚蠢的。

#17


搞这个没啥用的

#18


没有必要在小小的消息框上下这么大的功夫吧。
如果真想达到这种效果就就不如自己写一个了,
自己写一个有可能还能学到更多东西的。

#19


引用 18 楼  的回复:
没有必要在小小的消息框上下这么大的功夫吧。
如果真想达到这种效果就就不如自己写一个了,
自己写一个有可能还能学到更多东西的。

这个说出了心声:
[img=http://ft0.storage.mail.sina.com.cn/7ac9584300834ddf958f92659b6e04de?Cheese=4741c2&ssig=kAo4f%2F%2FT0h&Expires=1334559932&KID=sae,mk4jz2x3x4][/img]

#20


用个窗体,设置一下。show出来就行了

#21


自己重新写一个!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#22


自己写一个控件把

#1


期待中

#2


消息框也是form窗体吧?那在其属性里面就有的

#3


有那功夫自己搞个窗体比它强多了

#4


都用到钩子了,这个窗体是你自己的吗?如果是还是自己做一个吧。在外面设置另一个窗体的属性没弄过。

#5


引用 2 楼  的回复:
消息框也是form窗体吧?那在其属性里面就有的


这不是继承Form的,没有属性

#6


引用 3 楼  的回复:
有那功夫自己搞个窗体比它强多了


不是我做的,我只是接手。

#7


直接用窗体,MessageBox太简单了。

#8


引用 4 楼  的回复:
都用到钩子了,这个窗体是你自己的吗?如果是还是自己做一个吧。在外面设置另一个窗体的属性没弄过。


它原来的架构就是这样的,我不想动了,想办法家东西就好。

#9


.net内置的类,不能更改的,自己做一个窗体吧,很简单的。

#10


WM_ERASEBKGND
WM_PAINT
WM_NCPAINT

这些系统事件处理后,你再重新覆盖绘制

#11


该回复于2012-04-20 16:13:22被版主删除

#12


引用 10 楼  的回复:
WM_ERASEBKGND
WM_PAINT
WM_NCPAINT

这些系统事件处理后,你再重新覆盖绘制


有什么办法知道事件处理完吗?

#13


自己写一个!

#14


我知道自己写最好,但不被允许,只能在原来的基础上改。

#15


引用 14 楼  的回复:
我知道自己写最好,但不被允许,只能在原来的基础上改。


还有这样的要求?

#16


本帖最后由 caozhy 于 2012-04-16 22:13:03 编辑
MessageBox在不同版本的Windows上都不同,比如Windows 7是上面白色,下面窗口颜色,在Windows XP下,为单一的窗口颜色。所以自定义它是很愚蠢的。

#17


搞这个没啥用的

#18


没有必要在小小的消息框上下这么大的功夫吧。
如果真想达到这种效果就就不如自己写一个了,
自己写一个有可能还能学到更多东西的。

#19


引用 18 楼  的回复:
没有必要在小小的消息框上下这么大的功夫吧。
如果真想达到这种效果就就不如自己写一个了,
自己写一个有可能还能学到更多东西的。

这个说出了心声:
[img=http://ft0.storage.mail.sina.com.cn/7ac9584300834ddf958f92659b6e04de?Cheese=4741c2&ssig=kAo4f%2F%2FT0h&Expires=1334559932&KID=sae,mk4jz2x3x4][/img]

#20


用个窗体,设置一下。show出来就行了

#21


自己重新写一个!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#22


自己写一个控件把