MFC的杂七杂八
1、判断焦点当前所在控件
2、动态移动控件位置
3、GDI+绘制文字
4、编辑框跳变显示
5、最大化显示
6、Uint uFormat常用值
7、获取菜单个数
8、添加气泡提示
9、编辑框输入时响应函数
10、隐藏菜单
11、修改标题栏标题
12、动态加载标题栏图标
13、动态改变菜单不可用
14、使主窗口可用/不可用
15、使关闭按钮不可用
16、listControl中获取所有行的checkbox状态
1、判断焦点当前所在控件
- if(this->GetFocus()->GetDlgCtrlID() == IDC_EDIT4)
- {
- //在
- }
2、动态移动控件位置
消息:
CRect rect;
GetDlgItem(ID地址)->GetWindowRect(&rect);//获得控件的绝对坐标
ScreenToClient(&rect);//获得相对于主窗体的坐标
rect.OffsetRect(CSize(10,10));//要移动的相对位置
GetDlgItem(ID地址)->MoveWindow(rect);//移动到目标坐标
3、GDI+绘制文字
- CString drawString = "GDI+输出文字";
- FontFamily fontFamily(L"Century Gothic");
- Gdiplus::Font font(&fontFamily, 10, FontStyleRegular, UnitPoint);
- SolidBrush linGrBrush(Color(100, 255, 0, 0));
- PointF pf;
- pf.X = 100;
- pf.Y = 100;
- graphics.DrawString((const WCHAR*)(LPCTSTR)drawString,
- -1,
- &font,
- pf,
- &linGrBrush);
4、编辑框跳变显示
GetDlgItem(IDC_EDIT5)->SetWindowText(add);
GetDlgItem(IDC_EDIT5)->UpdateWindow();//更新数据后直接刷新
5、最大化显示
APP->InitInstance()
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
6、Uint uFormat常用值
DT_BUTTON //靠底显示
DT_CENTER //居中显示
DT_LEFT //靠左显示
DT_RIGHT //靠右显示
DT_SINGLELINE //单行显示
DT_DOT //靠上显示
DT_VCENTER //垂直方向居中
DT_WORDBREAK //自动换行
7、获取菜单个数
获取主菜单栏中菜单个数:GetMenuItemCount();
获取主菜单某个菜单的子菜单个数:可用GetSubMenu获取后再用GetMenuItemCount()
8、添加气泡提示
申明:CToolTipCtrl m_ToolTipCtrl;
初始化:
- m_ToolTipCtrl.Create(this);
- m_ToolTipCtrl.AddTool(GetDlgItem(IDC_BUTTON1), _T("This is ToolTip"));
- m_ToolTipCtrl.SetMaxTipWidth(123);
- m_ToolTipCtrl.Activate(TRUE);
响应:
- BOOL CXXXView::PreTranslateMessage(MSG* pMsg)
- {
- ASSERT(pMsg != NULL);
- if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
- {
- m_ToolTipCtrl.RelayEvent(pMsg);
- }
- }
光标移到到IDC_BUTTON1按钮上就会出现如下:
9、编辑框输入时响应函数
OnUpdateEdit1();//输入时响应,不需要按回车键
10、隐藏菜单
视图类中初始化函数中添加:
CWnd *pWnd=AfxGetMainWnd();
pWnd->SetMenu(NULL);
pWnd->DrawMenuBar();
11、修改标题栏标题
BOOL CCMCCApp::InitInstance()
{
//函数return 前面添加下段
m_pMainWnd->SetWindowText("标题123456789");
}
随便什么地方:
AfxGetMainWnd()->SetWindowText("标题修改成功");
11、去掉(隐藏)某一个菜单项
主函数中:int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
GetMenu()->GetSubMenu(1)->RemoveMenu(0,MF_BYPOSITION );//第二菜单项中的第一个子菜单被移除
}
注:菜单被隐藏以后,继续隐藏后面菜单项,位置向前移动一位。
如下:不是一个菜单项隐藏三次,是连续隐藏0、1、2三个菜单项。
GetMenu()->GetSubMenu(1)->RemoveMenu(0,MF_BYPOSITION );
GetMenu()->GetSubMenu(1)->RemoveMenu(0,MF_BYPOSITION );
GetMenu()->GetSubMenu(1)->RemoveMenu(0,MF_BYPOSITION );
12、动态加载标题栏图标
视图类中:可以是初始化函数也可以是控件响应函数中添加
HICON hIcon = AfxGetApp()->LoadIcon(图标ID);//加载图标资源
ASSERT(hIcon);
AfxGetMainWnd()->SendMessage(WM_SETICON, TRUE, (LPARAM)hIcon);
13、动态改变菜单不可用
void 1view::OnUpdateCommunicationsDisablecommunications(CCmdUI *pCmdUI)中
pCmdUI->Enable(TRUE);//可用
pCmdUI->Enable(FALSE);//不可用
PS:判断pCmdUI->SetCheck(m_radiomode == 1);
14、使主窗口可用/不可用
CMainFrame* pMFram = (CMainFrame*)AfxGetMainWnd();
pMFram->EnableWindow(false);//主窗口不可用
//如果在View中就是视图窗口不可用,但是框架可用
EnableWindow(false);//窗口不可用
EnableWindow(true);//窗口可用
15、使关闭按钮不可用
- CMenu* pSysMenu = AfxGetMainWnd()->GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- pSysMenu->EnableMenuItem(SC_CLOSE, MF_DISABLED | MF_GRAYED);
- }
PS:不能屏蔽在任务栏上面右击程序图标显示的”关闭窗口“功能。
16、listControl中获取所有行的checkbox状态
添加chexkbox风格:dwStyle |= LVS_EX_CHECKBOXES;
- CString str;
- for(int i=0; i<m_list2.GetItemCount(); i++)
- {
- if( m_list2.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list2.GetCheck(i))
- {
- str.Format(_T("第%d行的checkbox为选中状态"), i);
- AfxMessageBox(str);
- }
- }
MFC的杂七杂八的更多相关文章
- vs2010静态链接MFC库报链接错误
由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误: uafxcw.lib(afxmem.obj) : error LNK2 ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- VC中的MFC到底是什么?
1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API ...
- MFC&Halcon之实时视频监控
上一篇实现了在MFC的窗体内显示图片,本篇介绍如何在MFC窗体内实时显示摄像头的影像. 要实现的功能是点击一个“开始”按钮,可以显示影像,再点击“停止”按钮,可以停止显示. 因为实时显示影像需要在一个 ...
- UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题
UITableView 的cell 复用机制节省了内存,但是有时对于多变的自定义cell,重用时会出现界面出错(例如复用出错,出现cell混乱重影).滑动卡顿等问题,这里只简单敲下几点复用出错时的解决 ...
- MFC快速入门 - 菜单
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6231104.html 打开VS2010,依次打开File – New – Proje ...
- MFC画线功能总结
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...
- MFC消息映射机制以及画线功能实现
---此仅供用于学习交流,切勿用于商业用途,转载请注明http://www.cnblogs.com/mxbs/p/6213404.html. 利用VS2010创建一个单文档标准MFC工程,工程名为Dr ...
- mfc+vtk
MFC中view类主要处理显示视图,doc类处理文档,mainframe主要为整个窗口的和工程的设置管理.由此,VTK与MFC联合编程时,需要主要的是数据操作,以及显示要很好的与MFC中的结构结合,做 ...
随机推荐
- apache在windows上开启gzip的方法
环境搭建好之后,默认并没有开启gzip功能.需要修改apache的httpd.conf配置文件进行开启.开启方法如下:1. httpd.conf中打开deflate_Module和headers_Mo ...
- QTimerLine类学习
QTimeLine类提供了控制动画的时间轴. 类型:enum CurveShape{EaseInCurve,EaseOutCurve,EaseInOutCurve,LinearCurve,Sine ...
- vim命令---存阅
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...
- centos redis安装
对redis不是很了解,先写一个简单的安装过程 系统版本:centos 6.5 redis版本:2.8.23 一.安装依赖 sudo yum install tcl gcc gcc-c++ -y 二. ...
- 富文本文件CKEDITOR增加上传图片功能(.net)
如题,本身的CKEDITOR控件并没有开启上传图片的功能, 打开图像按钮,只有图像信息和高级两个table选项卡,版本不同,显示略有差异,我的实现是有两种方法都可以添加上传功能, 第一种方法使用CKE ...
- Carthage&&cocopads 摘抄笔记
Carthage 是 iOS/Mac 开发生态圈的一个包管理工具,与现在流行的 CocoaPods 不同,它是一个去中心化的解决方案.知道它已经有一段时间了,但是一直没有好好玩过,今天整合 Carth ...
- JavaScript 客户端JavaScript之 脚本化文档
客户端JavaScript的存在把静态HTML转变为交互式的Web应用程序,脚本化Web页面的内容正是JavaScript存在的理由. 一个文档对象模型或者说DOM就是一个API,它定义了如何访问 ...
- ASP.NET c#学习经验
1.DataGrid自定义字段.<Column <asp:BoundColumn DataField="khbh" HeaderText="客户编号&quo ...
- js 跨浏览操作
/* 跨浏览器添加事件绑定 obj : 需要绑定js时间的对象 type: 欲绑定的事件类型,如:click ,mounseover 等事件 不需要添加on fn : 触发的脚本*/func ...
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)
文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915 一.配置文件:SpringMVC 用的是 的MultipartFil ...