怎么mfc 截获消息onctlcolor消息

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
1. 如何获取应用程序的 实例句柄? .doc 34页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
1. 如何获取应用程序的 实例句柄? .doc
你可能关注的文档:
··········
1. 如何获取应用程序的 实例句柄?
应用程序的 实例句柄保存在CWinAppIm_hInstance 中,可以这么调用
AfxGetInstancdHandle获得句柄.
Example: HANDLE hInstance=AfxGetInstanceHandle();
2. 如何通过代码获得应用程序主窗口的 指针?
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用 AfxGetMainWnd实现。
AfxGetMainWnd() -&ShowWindow(SW_SHOWMAXMIZED); //使程序最大化.
3.如何在程序中获得其他程序的 图标?
(1) SDK函数 SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handle,
(2) SDK函数 SHGetFileInfo获得有关文件的 很多信息,如大小图标,属性,
Example(1): 在程序窗口左上角显示 NotePad图标.
void CSampleView: OnDraw(CDC * pDC)
if( :: SHGetFileInfo(_T(&c:\\pwin95\\notepad.exe&),0,
&stFileInfo,sizeof(stFileInfo),SHGFI_ICON))
pDC -&DrawIcon(10,10,stFileInfo.hIcon);
Example(2):同样功能,Use ExtractIcon Function
void CSampleView:: OnDraw(CDC *pDC)
HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T
(&NotePad.exe&),0);
if (hIcon &&hIcon!=(HICON)-1)
pDC-&DrawIcon(10,10,hIcon);
说明: 获得notepad.exe的路径正规上来说用GetWindowsDirectory 函数得到,
如果是调用 win95下的画笔,应该用访问注册表的方法获得其路径,要作成一个
比较考究的程序,考虑应该全面点.
4.如何编程结束应用程序?如何编程控制windows的重新引导?
这是个很简单又是编程中经常要遇到的问题.
第一问,向窗口发送 WM_CLOSE消息,调用 CWnd::OnClose成员函数.允许对用户提示
是否保存修改过的数据.
Example: AfxGetMainWindow()-&SendMessage(WM_CLOSE);
还可以创建一个自定义的函数 Terminate Window
void Terminate Window(LPCSTR pCaption)
CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption);
pWnd -&SendMessage(WM_CLOSE);
说明: FindWindow函数不是提倡的做法,因为它无法处理标题栏自动改变,比如
我们要检测 Notepad是不是已运行而事先不知道Notepad的标题栏,这时 FindWindow就
无能为力了,可以通过枚举 windows任务列表的办法来实现。 在 机械出版社
&Windows 95 API开发人员指南&一书有比较详细的介绍,这里就不再多说乐。
第二问,Use ExitWindowsEx Function函数控制系统
正在加载中,请稍后...4641人阅读
Window函数学习(23)
Window消息学习(13)
很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成!
WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下:
1.首先在自己需要设置界面的对话框上点击右键--&建立类向导--&加入WM_CTLCOLOR消息--&自动生成OnCtlColor()函数,此函数可以对本对话框的控件的界面外观做修饰,用法如下:
将类向导产生的函数做如下修改:
HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)&
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);
// TODO: Change any attributes of theDC here
//设置显示字体
CFont * cFont=new CF
cFont-&CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,&
ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH&FF_SWISS,&Arial&);
//对特定的控件做修改
switch(nCtlColor)
case CTLCOLOR_STATIC: //对所有静态文本控件的设置
pDC-&SetBkMode(TRANSPARENT);&
//设置背景为透明
pDC-&SetTextColor(RGB(255,255,0)); //设置字体颜色
pWnd-&SetFont(cFont); //设置字体
HBRUSH B = CreateSolidBrush(RGB(125,125,255));&
//创建画刷
return (HBRUSH) B; //返回画刷句柄
case CTLCOLOR_EDIT: //对所有编辑框的设置
pDC-&SetBkMode(TRANSPARENT);&
pDC-&SetTextColor(RGB(255,255,0));&
pWnd-&SetFont(cFont);&
HBRUSH B = CreateSolidBrush(RGB(125,125,255));&return (HBRUSH) B;&
return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);
}注:case的类别有以下几种:CTLCOLOR_BTN 按钮控件CTLCOLOR_DLG 对话框CTLCOLOR_EDIT 编辑框CTLCOLOR_LISTBOX 列表框CTLCOLOR_MSGBOX 消息框CTLCOLOR_SCROLLBAR 滚动条CTLCOLOR_STATIC 静态文本
2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的控件进行设置,方法如下:
switch (pWnd-&GetDlgCtrlID())&
//针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置
case IDC_CTL1:
case IDC_CTL2:
case IDC_CTL3:&
pDC-&SetBkMode(TRANSPARENT);
pDC-&SetTextColor(RGB(255,255, 0));
pWnd-&SetFont(cFont);
HBRUSH B = CreateSolidBrush(RGB(125,125,255));
return (HBRUSH) B;
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}通过消息WM_CTLCOLOR我们可以改变对话框或一些特殊控件的背景颜色
1、添加WM_CTLCOLOR消息映射。
2、在CWnd::OnCtlColor里面作相应的处理
HRESULT CWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
&&&&&switch (nCtlColor)
&&&&&&&&&case&CTLCOLOR_BTN:&&&&&&&&&&&&&&&&&// Button control&
&&&&&&&&&{
&&&&&&&&&&&&&pDC-&SetBkColor( RGB( 255, 0, 0) );
&&&&&&&&&}
&&&&&&&&&case&CTLCOLOR_DLG:&&&&&&&&&&&&&&&&&// Dialog box&
&&&&&&&&&case&CTLCOLOR_EDIT:&&&&&&&&&&&&&&&&&// Edit control&
&&&&&&&&&{
&&&&&&&&&&&&&COLORREF bkColor = RGB(255,0,0);
&&&&&&&&&&&&&CR
&&&&&&&&&&&&&pWnd-&GetClientRect(&rect);&
&&&&&&&&&&&&&br.CreateSolidBrush(bkColor);
&&&&&&&&&&&&&pDC-&FillRect(rect, &br);*/
&&&&&&&&&&&&&pDC-&SetBkColor(bkColor);
&&&&&&&&&}
&&&&&&&&&case&CTLCOLOR_LISTBOX:&&&&&&&&&// List-box control&
&&&&&&&&&case&CTLCOLOR_MSGBOX:&&&&&&&&&// Message box&& &&&&&&&&&&&case&CTLCOLOR_SCROLLBAR:&&&// Scroll-bar control&
&&&&&&&&&case&CTLCOLOR_STATIC:&&&&&&&&&&&&&// Static control&&
&&&&&&&&&default:
&&&&&}&&&&
&&&&&return CWnd::OnCtlColor(pDC, pWnd, nCtlColor);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49346次
排名:千里之外
原创:33篇
(1)(4)(8)(18)(8)温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(5031)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'WM_CTLCOLOR和OnCtlColor消息的用法',
blogAbstract:'
WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下:
1.首先在自己需要设置界面的对话框上点击右键--&建立类向导--&加入WM_CTLCOLOR消息--&自动生成OnCtlColor()函数,此函数可以对本对话框的控件的界面外观做修饰,用法如下:将类向导产生的函数做如下修改: HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);// TODO: Change any attributes of theDC here',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:8,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'-1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
WM_CTLCOLOR 消息
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序
下载积分:3000
内容提示:MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序
文档格式:DOCX|
浏览次数:7|
上传日期: 16:29:25|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3000 积分
下载此文档
该用户还上传了这些文档
MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 On
官方公共微信}

我要回帖

更多关于 onctlcolor 怎么调用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信