MFC遍历窗体所有的控件
HWND pWnd = FindWindow(NULL,"另存为"); //获得窗口的句柄
void saveopen(HWND pWnd)
{
HWND m_hWnd=pWnd;
HWND hWndChild =::GetWindow(m_hWnd,GW_CHILD);
TCHAR BUF[512];
CString filename;
CWnd *pedit;
while(hWndChild)
{
char *buf=new char[512];
::GetClassName(hWndChild,buf,512);//得到枚举的控件是什么类型的,
CString str=buf;
str.TrimRight();
delete buf;
//AfxMessageBox(str);
if(str=="ComboBoxEx32")
{
HWND tt =::GetWindow(hWndChild,GW_CHILD);
HWND yy =::GetWindow(tt,GW_CHILD);
pedit = CWnd::FromHandle(yy);
pedit->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
filename=BUF;//完成第一步保存原始的文件名
CString sPath="F:\\work";
lstrcpy(BUF,(LPCTSTR)sPath);
pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);
}
if(str=="Button") //枚举到按钮,有保存和取消按钮
{
CWnd *pwnd = CWnd::FromHandle(hWndChild);
pwnd->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
//发消息得到按钮的标题
CString str=BUF;
str.TrimRight();
if(str=="保存(&S)")//如果是保存按钮
{
::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONUP,0,0);
strcpy(BUF,filename);
pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);
return;
}
}
hWndChild=::GetWindow(hWndChild,GW_HWNDNEXT);
}
}
//messagebox输出非字符串的数据
CString strTmp;
strTmp.Format("窗口句柄=%0x",pWnd->m_hWnd);
AfxMessageBox(strTmp);
MFC中菜单变灰
方法1:有UpdateCmdUI句柄时
定义一个BOOL变量m_b来标志菜单项是否有效,该菜单项响应UPDATE_COMMAND_UI消息,在消息处理函数中pCmdUI->Enable(m_b);以后你根据需要来设置m_b的值,就可以使菜单是否可用。在一个函数中可以控制多个菜单
方法2:没有UpdateCmdUI句柄时
MFC中缺省的习惯是当没有UpdateCmdUI句柄时程序是使能(Enable)菜单,菜单自动变成使能,只要关掉缺省值就可以了,把下面的代码加入你的程序
CMainFrm::CMainFrm
{
// Other stuff
this->m_bAutoMenuEnable = false;
}
然后在消息响应函数中添加如下代码:
CMenu* m_menu = GetMenu();
CMenu* submenu = m_menu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_GRAYED);
CFrameWnd::m_bAutoMenuEnable
//Controls automatic enable and disable functionality for menu items.
//CFrameWnd类中的BOOL型数据成员,默认为TRUE。
//如果m_bAutoMenuEnable设为TRUE,则如果某菜单项在当前命令路径中无法找到相应的命令消息控制函数,则此时应用程序框架便禁用该菜单项,并将该菜单项设为灰色。
//如果m_bAutoMenuEnable设为FALSE,便可以禁止上叙自动禁用无控制函数菜单项的特性。
易出错不推荐使用
转载于:https://www.cnblogs.com/carekee/articles/2334604.html
MFC遍历窗体所有的控件相关推荐
- 遍历窗体中所有控件的信息
public void TraverControl(Control Ctl) { foreach (Control c in Ctl.Controls) { label1.Text += &q ...
- MFC中使用TAB Control控件
2019独角兽企业重金招聘Python工程师标准>>> MFC中使用TAB Control控件 MFC中使用TAB Control控件(转) 假如我现在有个SDI程序,View是Fo ...
- MFC之使用 Windows 标准控件
使用 Windows 标准控件 为了提高常用代码的复用性,VC 使用控件将常用的诸如用户输入.操作数据等功能封装起来.控件通常放在对话框或工具栏中,分为 3 种:Windows 标准控件.Active ...
- 自定义窗体设计器-控件测试
自定义窗体设计器-控件测试 基于.net2的自定义窗体设计器控件(类似visual studio的vb,c#设计器,其实就是vs2005的设计器) 控件由四部分组成:工具栏,工具箱,绘图设计区,属性框 ...
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序 ...
- 用回车键实现MFC对话框中TAB键控件输入焦点在控件中跳转的效果(转)
用回车键实现MFC对话框中TAB键控件输入焦点在控件中跳转的效果(转) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://hcq11.blogbus.com/logs/5 ...
- MFC设置对话框背景色及控件颜色
MFC设置对话框背景色及控件颜色 一.使用背景图片更改对话框背景色 在对话框源文件void CxxDlg::OnPaint()函数中 if (IsIconic()) { (这里省略) } else { ...
- 二级VB培训笔记06:窗体与常用控件综合案例【个人信息注册】
二级VB培训笔记06:窗体与常用控件综合案例[个人信息注册] 一.常用控件属性与方法思维导图 二.综合案例--个人信息注册 1.创建工程,修改名称为"个人信息注册",窗体名称设置为 ...
- vb.net 教程 3-10 窗体编程 datagridview控件 3 禁止追加行 与 禁止删除行
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 如<vb.net 教程 3-10 窗体编程 datagridview控件 1 初步 > ...
最新文章
- 转帖 .Net(C#)纯GDI+绘制实时动态曲线图之二(曲线控件全部源码)
- 华为申请鸿蒙系统邮箱,华为鸿蒙系统
- 基于java实现农产品_基于微信小程序的个人商铺(农产品)设计与实现毕业论文+开题报告+前后台源码(JavaSSM+Mysql)+文献资料...
- 微软出品 Kubernetes 最新学习指南 v3.0
- esper(4-3)-Non-Overlapping Context
- Zookeeper实现注册与发现
- 功能引导 android,Flutter实现App功能引导页
- 如何用计算机制作公式,常用的那些软件能做公式编辑器
- Javascript 判断浏览器是否为IE的最短方法
- Python破解协议密码
- 關于dotNet開發中的框架思考
- 【Linux系统】部分基础命令手册
- ICS工业控制安全类方向赛题简单总结
- 华为eNSP静态路由原理与配置实例详解
- php开源 饭馆记账软件_个人记账软件 - 开源免费
- ImportError:undefined symbol: _ZN2at5sliceERKNS_6TensorElN3c108optionalIlEES5_l
- WebGL,Cesium以及GeoJSON数据的简单介绍
- 数据库—行式存储和列式存储
- 一文教你搞定PMOS管选型
- 一些时间的概念与区分(UTC、GMT、LT、TAI等)