- 浏览: 2036014 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
原文地址:http://blog.csdn.net/byxdaz/archive/2010/04/18/5499564.aspx 我们在做程序设计时界面与功能,那个更加吸引用户的兴趣呢?这是一个很难回答的问题。拥有美丽的外观,软件就成功了一半。界面由控件、工具栏、菜单、窗体等元素组成,对他们进行美化就能得到一个美丽的界面。 目前界面编程技术包括MFC、win32 SDK 、CJLibrary、WTL以及一些界面开发包。文本介绍MFC界面编程技术。 一、控件自绘 控件的生成包括静态控件和动态控件的生成。动态控件是在应用程序运行过程中临时产生的。所以在进行动态控件的自绘时,方法比自绘静态控件复杂些。应该考虑控件的大小、宽高等。 自绘控件类型 静态控件 动态控件 绘制步骤 1、控件具有自绘属性。 2、响应OnDrawItem函数。 1、控件具有自绘属性。 2、响应OnMeasureItem函数。 3、响应OnDrawItem函数。 注:控件的自画需要响应四个消息:WM_MEASUREITEM, WM_DRAWITEM, WM_COMPAREITEM, 和WM_DELETEITEM. combo box ,list box 销毁时响应OnDeleteItem OnDrawItem函数说明,函数定义为: afx_msg void OnDrawItem(int nIDCtl,LPDRAWITEMSTRUCT lpDrawItemStruct); 参数说明: nIDCtl:发送WM_DRAWITEM消息控件的ID值,如果该值为零,表明该消息由菜单控件发出的。 LpDrawItemStruct:指向一个DRAWITEMSTRUCT结构的指针, DRAWITEMSTRUCT 为需要自绘的控件或者菜单项提供了必要的信息。在需要绘制的控件或者菜单项对应的WM_DRAWITEM消息函数中得到一个指向该结构的指针。 DRAWITEMSTRUCT结构的定义如下: 结构成员: CtlType :指定了控件的类型,其取值如下表所示。 取值 描述 ODT_BUTTON 按钮控件 itemID :表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为–1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem 成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置itemAction 成员为合适值,使得无需绘制焦点。 itemAction :指定绘制行为,其取值可以为下表中所示值的一个或者多个的联合。 取值 描述 itemState :指定了当前绘制操作完成后,所绘项的可见状态。例如,如果菜单项应该被灰色显示,则可以指定ODS_GRAYED状态标志。其取值可以为下表中所示值的一个或者多个的联合。 取值 描述 hDC :指定了绘制操作所使用的设备环境。 rcItem :指定了将被绘制的矩形区域。这个矩形区域就是上面hDC的作用范围。系统会自动裁剪组合框、列表框或按钮等控件的自绘制区域以外的部分。也就是说rcItem中的坐标点(0,0)指的就是控件的左上角。但是系统不裁剪菜单项,所以在绘制菜单项的时候,必须先通过一定的换算得到该菜单项的位置,以保证绘制操作在我们希望的区域中进行。 itemData : 对于菜单项,该成员的取值可以是由CMenu::AppendMenu、CMenu::InsertMenu或者CMenu::ModifyMenu等函数传递给菜单的值。 对于列表框或这组合框,该成员的值可以为由ComboBox::AddString、CComboBox::InsertString、CListBox::AddString或者CListBox::InsertString等传递给控件的值。 如果ctlType 的取值是ODT_BUTTON或者ODT_STATIC, itemData的取值为0 OnMeasureItem函数说明,函数定位: afx_msg void OnMeasureItem(int nIDCtl,LPMEASUREITEMSTRUCT lpMeasureItemStruct); 参数说明: nIDCtl:发送WM_MEASUREITEM消息控件的ID值,如果该值为零,表明该消息是由菜单控件发出的。 LpMeasureItemStruct:指向一个MEASUREITEMSTRUCT结构的指针,它的数据结构定义如下: typedef struct tagMEASUREITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; UINT itemWidth; UINT itemHeight; DWORD itemData; } MEASUREITEMSTRUCT; CtlType:指定控件的类型.这个成员可以是下列的一个值: 取值 描述 ODT_BUTTON 自绘按钮 ODT_COMBOBOX 自绘组合框 ODT_LISTBOX 自绘列表框 ODT_LISTVIEW 自绘列表视图控件 ODT_MENU 自绘菜单 CtlID:指定组合框(combo box), 列表框(list box), 或 控钮(button)的标识符.这个成员不能在菜单中使用 ItemID:指定菜单项的标识符或组合框(combo box), 列表框(list box)的位置索引。列表框(list box)风格已经有LBS_OWNERDRAWVARIABLE时这个值才被指定。组合框(combo box)风格已经有CBS_OWNERDRAWVARIABLE风格时这个值才被指定。 ItemWidth:指定宽,单位象素,一个菜单项目.在从消息返回之前,自绘菜单项的所有者必需填充这个成员。 ItemHeight:指定高,单位象素,列表框(list box)一个个别的项或一个菜单.在从消息返回之前自绘组合框,列表框或菜单项必需填写这个参数。 ItemData:指定与应用程序定义的菜单项相关联的32位值.做为控件,这个参数指定值是最后指定给列表框(list box)或组合框(combo box)的LB_SETITEMDATA或CB_SETITEMDATA消息中的值.如果列表框(list box)或组合框(combo box)已经使用LB_HASSTRINGS或CB_HASSTRINGS风格这个最初值是零.否则,这个值最初的值是传给列表框(list box)或组合框(combo box)下列消息中lparam参数的一个值: CB_ADDSTRING CB_INSERTSTRING LB_ADDSTRING LB_INSERTSTRING WM_MEASUREITEM与WM_DRAWITEM区别:在WM_MEASUREITEM消息影射函数中设置当前要画的Item的大小尺寸;创建控件。在WM_DRAWITEM消息影射函数中根据Item的大小尺寸来画该Item(图标/位图/字符串等)。 二、常用控件使用方法 1、按钮类 CButtonST目前见过的最强大,功能最全的CButton派生类。具体使用方法参考:http://www.vckbase.com/document/viewdoc/?id=517 2、菜单 自绘菜单的实现: http://www.vckbase.com/document/viewdoc/?id=1200 3、工具条使用方法 4、CToolTipCtrl使用方法 ToolTip是Win32中一个通用控件,用于提示信息的显示,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法。 一般用法步骤: 添加CToolTipCtrl成员变量 m_tt。 在父窗口中调用EnableToolTips(TRUE); 在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pWnd,"string to display")。 重载父窗口的 BOOL PreTranslateMessage(MSG* pMsg) ,在函数中调用 m_tt.RelayEvent(pMsg)。 下面假设在窗口CWndYour中使用CToolTipCtrl 在类定义中添加变量说明: class CWndYour:xxx line-height: 19px;
combo ,list box 排序时响应OnCompareItem
button, combo box, list box, or menu 创建时响应OnMeasureItem
button, combo box, list box, or menu 改变时响应OnDrawItem
typedef struct tagDRAWITEMSTRUCT {
UINT CtlType;
UINT CtlID;
UINT itemID;
UINT itemAction;
UINT itemState;
HWND hwndItem;
HDC hDC;
RECT rcItem;
ULONG_PTR itemData;
} DRAWITEMSTRUCT;
ODT_COMBOBOX 组合框控件
ODT_LISTBOX 列表框控件
ODT_LISTVIEW 列表视图控件
ODT_MENU 菜单项
ODT_STATIC 静态文本控件
ODT_TAB Tab控件
CtlID: 指定了自绘控件的ID值,而对于菜单项则不需要使用该成员
ODA_DRAWENTIRE 当整个控件都需要被绘制时,设置该值
ODA_FOCUS 如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。
ODA_SELECT 如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState 成员,以确定控件是否处于选中状态。
ODS_CHECKED 如果菜单项将被选中,则可设置该值。该值只对菜单项有用。
ODS_COMBOBOXEDIT 在自绘组合框控件中只绘制选择区域。
ODS_DEFAULT 默认值。
ODS_DISABLED 如果控件将被禁止,则设置该值。
ODS_FOCUS 如果控件需要输入焦点,则设置该值。
ODS_GRAYED 如果控件需要被灰色显示,则设置该值。该值只在绘制菜单时使用。
ODS_HOTLIGHT Windows 98/Me, Windows 2000/XP: 如果鼠标指针位于控件之上,则设置该值,这时控件会显示高亮颜色。
ODS_INACTIVE Windows 98/Me, Windows 2000/XP: 表示没有激活的菜单项。
ODS_NOACCEL Windows 2000/XP: 控件是否有快速键盘。
ODS_NOFOCUSRECT Windows 2000/XP: 不绘制捕获焦点的效果。
ODS_SELECTED 选中的菜单项。
hwndItem :指定了组合框、列表框和按钮等自绘控件的窗口句柄;如果自绘的对象时菜单项,则表示包含该菜单项的菜单句柄。
http://www.vckbase.com/document/viewdoc/?id=629
http://www.vckbase.com/document/listdoc.asp?mclsid=3&sclsid=305发表评论
-
__declspec(novtable) 的用法
2010-11-27 14:37 1589__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2925解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1652RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1480使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1219使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 20281、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1518防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5272// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1801VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3732深入GetMessage和PeekMessage (引自 ... -
获取信息的有关Windows API
2010-05-27 10:01 3153获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7874VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 18164SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1960解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7987字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 115561.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2340下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1546BOOL DrawPic(HDC hdc, TCHAR* ... -
对话框的数据交换--MFC深入浅出
2010-04-12 10:43 2467对话框数据交换指以下两种动作,或者是把内存数据写入对应的控 ... -
MFC中获取命令行参数的几种方法
2010-04-08 18:09 2975在MFC程序中,可以用以下几种方法来获取命令行参数。为方便 ...
相关推荐
VC界面编程总结
绝佳的VC界面编程宝典,包含96例,还有详细讲解!例如:自绘菜单的实现,在VC中透明浮动按键的实现,用VC设计托盘图标程序,图像平滑滚动效果的VC实现,利用钩子实现菜单阴影效果,在VC下显示JPEG、GIF格式图像的一...
【VC界面编程总结与基本应用】 在Windows编程中,Visual C++(简称VC)提供了一个强大的平台用于开发具有用户友好的图形用户界面(GUI)的应用程序。本篇内容主要涉及VC界面编程的一些关键知识点和常见操作,包括...
正如标题所述,“C界面编程总结”聚焦于界面编程的核心技巧,尤其是如何优化Visual C++(以下简称VC)中的界面设计。本文将深入探讨文件中提及的几个关键知识点,包括美化界面元素如控件、工具栏、菜单、窗体,以及...
### 图形界面编程入门——MATLAB图形用户界面(GUI)详解 #### 一、引言 随着计算机技术的发展,图形用户界面(GUI)已经成为软件开发不可或缺的一部分。MATLAB作为一种广泛应用于科学计算、算法开发和数据分析的...
### Java图形界面编程知识点概述 #### 一、Java图形界面编程简介 Java图形界面编程,简称GUI编程,是指使用Java语言开发用户界面的过程。通过GUI编程,开发者可以创建直观、友好的用户界面,使得用户可以通过点击...
- **`matlabGUI编程总结.pdf`**:这份文档很可能包含了GUI编程的关键概念、步骤和技巧的总结,是学习MATLAB GUI的宝贵资料。 - **`matlab界面示例.rar`**:这个压缩文件可能包含了一些实际的GUI示例代码,通过解压...
在开始任何界面编程之前,你需要创建一个基于MFC的应用程序项目。在Visual Studio中,选择"新建项目",然后选择"MFC应用程序"模板。这将为你生成一个基础的MFC项目框架,包括主窗口类(如CMainFrame)和应用程序类...
一、MFC与VC界面编程 MFC是微软提供的一套面向对象的C++类库,用于简化Windows应用程序开发,特别是GUI(图形用户界面)编程。它封装了Windows API,使得开发者可以更加高效地创建功能丰富的界面。 二、窗口类CWnd ...
### 源码解析:MATLAB界面编程实例详解 #### 一、引言 本文将对一份MATLAB界面编程的源代码进行详细解读,旨在帮助读者理解如何在MATLAB环境中创建用户界面。通过分析这份代码,我们将深入了解MATLAB界面编程的基础...
总结来说,这个实例教程旨在教授如何结合MATLAB的界面编程能力和立体视觉理论,构建一个能够处理和展示立体视觉数据的应用程序。通过学习和实践,你可以提升在MATLAB环境下的编程和视觉处理技能,为未来在相关领域的...
总结来说,Java图形界面编程插件,特别是SWING插件,为开发者提供了强大且便捷的GUI开发工具。通过在MyEclipse这样的集成开发环境中集成SWING插件,开发者可以利用其可视化特性快速构建和调试Java桌面应用的用户界面...
在VC界面编程中,对话框是一种临时的窗口,用于收集用户输入或显示信息。CDialog类是对话框的基础,派生自CWnd。开发者可以通过定义资源文件中的对话框模板,然后在代码中创建CDialog的实例来实现。 四、控件类 ...
### MATLAB GUI界面编程知识点详解 #### 一、MATLAB GUI编程概述 - **GUI(Graphical User Interface)**: 图形用户界面,允许用户通过图形化的元素(如按钮、文本框等)与应用程序交互的一种方式。 - **MATLAB ...
本资源“一个实例搞定MATLAB界面编程.rar”是一个专为MATLAB GUI设计的实例教程,旨在帮助用户快速理解和掌握MATLAB GUI的开发技巧。 GUI在MATLAB中的实现主要依赖于GUIDE(Graphical User Interface Development ...
"VC界面编程总结.pdf"可能涵盖了以上知识点的概述和实践经验,而"VC界面编程宝典.zip"可能包含更深入的技术细节、示例代码以及实用技巧,帮助读者深入理解并掌握VC界面编程。通过学习这些文档,开发者不仅可以提升...
总结来说,嵌入式用户图形界面编程是一个充满挑战和创造性的领域,它要求开发者不仅要有扎实的编程技能,还需要对图形学、人机交互设计以及相关硬件平台有深刻的理解。随着技术的不断进步,嵌入式用户图形界面编程将...
### Java GUI图形化用户界面编程的基础知识 #### 一、Java GUI编程概述 Java的GUI编程(Graphic User Interface,图形用户接口),是在它的抽象窗口工具箱(Abstract Window Toolkit,AWT)的基础上实现的。Java中...
总结来说,台达B系列人机界面编程软件ScreenEditor 2.00是一款功能强大且易用的工具,它简化了HMI应用开发流程,提高了设备操作的便捷性和效率。对于工业自动化领域的工程师和开发者而言,掌握ScreenEditor的使用将...