- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC窗口界面美化知识[精]
MFC 编程特效之界面美化
SDI 和MDI 程序中对非客户区(标题栏、左右下边界)的美化
*******************************************************************************
基本思路是重载CMainFrame 类的DefWindowProc() 函数, 并判断消息为:
WM_NCPAINT,WM_NCACTIVATE,WM_NOTIFY 的时候,调用自己的绘制窗口标题栏的函数。用GetSystemMetrics(SM_CSFRAME)和GetSystemMetrics(SM_CYFRAME)可以取得标题栏的左上角的坐标。最大化,最小化的按钮自己画,如果不是在标准的位置,一定要记录下他们的位置,并且在WM_NCLBUTTONDOWN 消息处理函数中判断是否是点击了按钮,以做出相应的处理。系统图标也可以自己重新画。
主要任务有贴图(包括标题栏、左边界、右边界、下边界、系统图标、最大化、最小化、关闭按钮)、处理消息(屏蔽系统自带按钮、双击状态栏改变大小、鼠标停放在三个自绘按钮上时改变按钮图标、单击自绘按钮时作出相应反应)。
*******************************************************************************
一、响应的消息及重载的函数
响应的消息及重载的函数都在CMainFrame 类中。响应DefWindowProc 函数,在其中判断消息是不是WM_NCPAINT、WM_MOVE、WM_NCACTIVATE、WM_NOTIFY,若是则重画标题栏、左框架、右框架、下框架、最大化、最小化、关闭按钮(放在一个函数里)。响应消息WM_NCHITTEST,使鼠标位于自绘按钮时返回相应hittest 值,同时屏蔽自带按钮的鼠标事件。
简言之,当鼠标位于自绘按钮时,让系统误以为鼠标位于相应按钮,而当鼠标位于系统自带按钮时,让系统误以为鼠标只是位于标题栏。自绘图标与之类似,不再赘述。
响应消息WM_NCMOUSEMOVE,判断光标是不是位于自绘最大化、最小化、关闭按钮区域,如是则重画相应的按钮。响应消息WM_NCLBUTTONDOWN,判断单击左键时鼠标是否位于自绘制的最大化、最小化、关闭按钮或图标区域,如是则执行相应的按钮操作。响应消息WM_NCLBUTTONDBCLK,使双击标题栏时窗口能最大化或还原。
*******************************************************************************
二、主要函数
LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAMlParam),在此函数内判WM_NCPAINT、WM_MOVE、WM_NCACTIVATE、WM_NOTIFY消息,自绘框架。MFC 编程特效之界面美化,自定义函数 void DrawFrame(CDC *pDC),用于绘制标题栏、左框架、右框架、下框架、最大化、最小化、关闭按钮。
*******************************************************************************
三、位图资源
标题栏位图 IDB_TITLEBAR
左右框架位图 IDB_LEFTANDRIGHT
下框架位图 IDB_BOTTOM
最小化按钮 IDB_MIN_NORMAL
IDB_MIN_FOCUS
最大化/恢复按钮 IDB_MAX_NORMAL
IDB_MAX_FOCUS
IDB_RESTORE_NORMAL
IDB_RESTORE_FOCUS
关闭按钮 IDB_EXIT_NORMAL
IDB_EXIT_FOCUS
*******************************************************************************
四、主要变量
CRect m_rtButtExit; //关闭按钮位置
CRect m_rtButtMax; //最大化按钮位置
CRect m_rtButtMin; //最小化按钮位置
CRect m_rtIcon; //图标位置
*******************************************************************************
五、具体实现细节
1、填充各框架:设置CRect 变量rtWnd, rtTitle, rtButtons,rtFrames 分别保存窗口位置、标题栏位置、关闭最大最小
您可能关注的文档
最近下载
- 统编版高中语文必修下册第三单元整体教学设计 .pdf VIP
- 党规党纪知识竞试题(案例分析题).doc VIP
- 钢筋混凝土化粪池22S702.docx VIP
- 世界典型矿床发现史和启示.ppt VIP
- 人教版四年级数学下册专项练习《应用题》 (含答案).docx VIP
- 2024年中国中小企业融资发展报告-微风企.pdf VIP
- D-Z-T 0279.12-2016 区域地球化学样品分析方法 第12部分:铂、钯和金量测定 火试金富集——发射光谱法(正式版).docx VIP
- 【GB_T50511-2022】 煤矿井巷工程施工标准.docx VIP
- 四年级【语文(统编版)】《推荐一个好地方》(第一课时.pptx VIP
- 2023年HCA-Security综合安防考试.docx VIP
文档评论(0)