2013-12-06 00:18
⁄ 工业·编程
⁄ 共 777字
下拉列表框,又称组合列表框,他是一个较为复杂的控件。它有三种状态,simple、drop down、drop list。由三个控件组成,编辑框、下拉按钮、listbox。所以,要实现下拉列表框的综合自绘,其工作量是蛮大的。而且,在一些特殊场合,要求下拉列表框具有一些特殊要求,所以想在一个例子中完全实现下拉列表框的所有功能也不太现实。基于上述愿因,本例中只是简单地实现了drop list状态下的,显示部分的控件的重绘,其中包括只读的编...
UI界面阅读全文
2013-12-06 00:18
⁄ 工业·编程
⁄ 共 468字
作为常用控件之一,进度条的重绘是最为频繁、最为丰富的。可以说没有几种软件用的是系统提供的进度条。本文只是简单的说明了进度条重绘的方法,例子中绘制的进度条并无特别之处,但一旦掌握本文的方法就可画出各种漂亮的进度条。 还和以前一样,我们要明确重绘进度条要重载那些函数。通过观察我们可以发现,标准进度条同样拥有3D外观。尝试...
UI界面阅读全文
2013-12-06 00:17
⁄ 工业·编程
⁄ 共 915字
按钮是最常用的控件之一,也是界面开发中装点界面、美化界面的重要元素。实现按钮的自绘制,在按钮上贴图将是界面大大美观。 我做的这个按钮类实现的就是自绘制的位图按钮。与MFC提供的CBitmapButton不同,这个类实现了正常的状态,鼠标经过的状态,鼠标按下的状态,和禁用的状态,也就是现在一般按钮都具有的四态。我们知道,windows下的按钮具有5态,而我没有实现的第五态选中态其实用处也...
UI界面阅读全文
2013-12-06 00:17
⁄ 工业·编程
⁄ 共 650字
编辑框是常用控件之一,同时也是一种完全自实现较为繁琐的控件。本例实现了对编辑框的简单的自绘制,在保留其自身的强大功能的前提下,实现了编辑框的边框、背景、文字颜色以及禁用态的各种颜色的替换。 要想重绘,我们必须知道要绘什么。通过观察默认的编辑框我们可以很清楚的看到编辑框有三个最基础的部分需要我们绘制,他们分别是...
UI界面阅读全文
2013-12-05 00:16
⁄ 工业·编程
⁄ 共 587字
最近在论坛上经常能看到帖子询问怎样使对话框内的控件随着对话框的缩放而改变布局,曾经也遇到过这个问题,现在将解决方案拿出来与大家共同探讨一下。
说到这个问题如何解决,我想每个熟悉MFC界面编程的人都会说对于要随窗口移动的控件,在OnSize函数中用MoveWindow改变他们的位置。这确实是唯一的方法,但随之而来的问题是,当控件的数量过多时,这个工作量是相当巨大的,那么有没...
UI界面阅读全文
2013-12-05 00:14
⁄ 工业·编程
⁄ 共 537字
同进度条一样,tab control也是被重绘较多、类型较为丰富的一种控件。在各种软件中,我们可以看到形形色色的tab control,它们有些是用程序画的,有些是用位图贴的,但无论如何其重绘的基本原理是一样的。本文就tab control重绘的基本原理加以说明,例子中对其实现了极为简单的重绘。 和重绘任何控件一样,首先是要分析需要重载那些...
UI界面阅读全文
2013-12-03 00:10
⁄ 工业·编程
⁄ 共 2598字
经常能在论坛上见人问tab控件应该如何使用,总是有很多网友热心的解答。回想起自己初学MFC的时候对于这个问题也是比较纠结,也曾到处查找资料和范例。想想初学时总希望什么事情都可以轻松实现,加一个tab控件就想直接实现界面切换的功能,看到网上介绍要自己创建对话框按非模态方式调用通过tab切换自己还认为这种方法有问题,把简单问题复杂化了。呵呵,现在想想自己当时太可笑了,如今看来做程...
UI界面阅读全文
2013-12-03 00:09
⁄ 工业·编程
⁄ 共 2695字
早在2007年我就写过一篇博客叫可适配控件对话框,那个时候一方面是工作需要研究了这个问题,另一方面是发现论坛里有很多人问相关的问题,于是就把自己的研究成果做了一个小例子发了上来,还写了那篇博客。
说来惭愧,首先那时那个例子其实是我照着网上一个例子改的,而且基本框架也差不多,我简单加了些自己的东西改了改名就发出来了,唉......如今原作者以无法考正了,在此...
UI界面阅读全文
2013-08-24 23:44
⁄ 工业·编程
⁄ 共 2509字
1.自绘了CListBox:简记如下:
在DrawItem中自绘,必须设定属性:LBS_OWNERDRAWFIXED |LBS_HASSTRINGS;
如果不设定LBS_HASSTRINGS,那么GetText取得的将是乱码:
三个难点,一是自绘属性加上LBS_OWNERDRAWFIXED后,必须同时重载DrawItem和MeasureItem,我第一次只重载了DrawItem,发现出现堆栈错误。 二是自绘属性中必须有LBS_HASSTRINGS,不然GetText取得的将是乱码. 三是自绘中 dc.Attach(lpDIS->hDC);必须有对应的dc...
CButton, CListBox, UI界面阅读全文
2013-08-24 23:41
⁄ 工业·编程
⁄ 共 596字
当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再发送WM_PAINT消息.
当WM_PAINT由InvalidateRect产生时,先发送WM_PAINT消息,OnPaint()这个执行内部向窗口发送了 WM_ERASEBKGND消息来刷新背景。在OnPaint()函数中会首先调用BeginPaint ()函数,在BeginPaint 函数中会发送WM_ERAS...
UI界面, WM_ERASEBKGND, WM_PAINT阅读全文