在 c# 中,我有一个窗口句柄 ( IntPtr ),我想更改该窗口的背景颜色。我该怎么做?
我可以像这样获取该句柄的 GDI 图形对象:
图形图形 = Graphics.FromHwnd(theHandle);
所以我应该能够以某种方式改变背景颜色?
我还想确保即使在窗口移动、调整大小、重绘等之后背景颜色仍然存在。
最佳答案
我认为没有办法直接使用 native (C/C++) 窗口执行此操作(即没有与 Control.BackColor 类似的 native GDI)。
从 Reflector 中可以看出,Control 使用 BackColor 属性来响应各种 WM_CTLCOLOR * 消息(例如 WM_CTLCOLOREDIT)。因此,如果您想更改 native 控件的背景颜色,您可能需要子类化该窗口并响应相同的消息。如果 native 窗口不是控件,您仍然需要子类化该窗口,但您必须处理 WM_PAINT或 WM_ERASEBKGND相反。
尝试 this thread on programmersheaven.com有关如何从 C# 继承 native 窗口的建议。
关于c# - 给定 IntPtr 句柄,更改窗口背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/196422/