好吧,所以我的目的是"让"我正在处理的UI。我很熟悉使用GDI 手动绘制我的控件,但今天我的目标只是直接在DC上刻录PNG。
主框架,几个按钮以及一些菜单都可以很好地工作。我的问题是 - 您将如何使用此类皮肤(例如Combobox,ListView或更多"动态"控件)剥夺更复杂的东西?
谢谢。我的目标平台是Windows,我将C 与WXWIDGETS FRAMERWORK一起使用。
'skin'现有控件,您必须将窗口插入并捕获绘制消息。大致:
// Subclass the control
WNDPROC lpfnOldCtrlProc;
lpfnOldCtrlProc = (WNDPROC)SetWindowLong(ControlHwnd, GWL_WNDPROC,
(DWORD)WinSubClassFunc );
和您的winsubclassfunc:
switch( message )
{
case WM_DRAWITEM: // owner-draw the item
但是,如果您想完全"皮肤"控制,例如更改ComboBox(边框,入口箱,下拉按钮,Droplist等)的所有元素,然后将其变成真正的混乱。就个人而言,我发现从头开始创建自己的控件比尝试子类别由多个窗口项目组成更容易。
。上述方法适用于例如使用标准的组合使用Droplist和子类,以使其包含颜色棒的滴定列表。