首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形化用户界面的剥皮

图形化用户界面的剥皮
EN

Stack Overflow用户
提问于 2014-03-08 12:23:03
回答 1查看 496关注 0票数 0

好的,所以我的意图是“美化”我正在工作的UI。我熟悉使用GDI+手动绘制控件,但我今天的目标只是直接在DC上使用BitBlitting png。

这与主框架,几个按钮和一些菜单很好的工作。我的问题是--你会如何使用这样的皮肤来剥去更复杂的东西,比如组合框、列表视图或更“动态”的控件?

谢谢。我的目标平台是Windows,我使用的是C++和wxWidgets框架。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 12:56:46

若要“皮肤”现有控件,您必须对窗口进行子类化,并捕获绘制消息。大致如下:

代码语言:javascript
复制
// Subclass the control 
WNDPROC lpfnOldCtrlProc;
lpfnOldCtrlProc = (WNDPROC)SetWindowLong(ControlHwnd, GWL_WNDPROC, 
                    (DWORD)WinSubClassFunc );

在你的WinSubClassFunc中:

代码语言:javascript
复制
switch( message )
{
case WM_DRAWITEM: // owner-draw the item

然而,如果你想要完全“皮肤”一个控制,例如改变一个ComboBox的所有元素(边框,入口盒,下拉按钮,液滴等等)然后,这就变成了真正的混乱。就我个人而言,我发现从零开始创建自己的控件要比尝试将包含多个窗口项的现有控件子类更容易。

上述方法可以很好地工作,例如使用带有液滴的标准组合框,并将其细分为包含色块液滴。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22269270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档