1、判断焦点当前所在控件

2、动态移动控件位置

3、GDI+绘制文字

4、编辑框跳变显示

5、最大化显示

6、Uint uFormat常用值

7、获取菜单个数

8、添加气泡提示

9、编辑框输入时响应函数

10、隐藏菜单

11、修改标题栏标题

12、动态加载标题栏图标

13、动态改变菜单不可用

14、使主窗口可用/不可用

15、使关闭按钮不可用

16、listControl中获取所有行的checkbox状态

1、判断焦点当前所在控件

  1. if(this->GetFocus()->GetDlgCtrlID() == IDC_EDIT4)
  2. {
  3. //在
  4. }

2、动态移动控件位置

消息:

CRect rect;
GetDlgItem(ID地址)->GetWindowRect(&rect);//获得控件的绝对坐标
ScreenToClient(&rect);//获得相对于主窗体的坐标
rect.OffsetRect(CSize(10,10));//要移动的相对位置
GetDlgItem(ID地址)->MoveWindow(rect);//移动到目标坐标

3、GDI+绘制文字

  1. CString drawString = "GDI+输出文字";
  2. FontFamily fontFamily(L"Century Gothic");
  3. Gdiplus::Font font(&fontFamily, 10, FontStyleRegular, UnitPoint);
  4. SolidBrush linGrBrush(Color(100, 255, 0, 0));
  5. PointF pf;
  6. pf.X = 100;
  7. pf.Y = 100;
  8. graphics.DrawString((const WCHAR*)(LPCTSTR)drawString,
  9. -1,
  10. &font,
  11. pf,
  12. &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;

初始化:

  1. m_ToolTipCtrl.Create(this);
  2. m_ToolTipCtrl.AddTool(GetDlgItem(IDC_BUTTON1), _T("This is ToolTip"));
  3. m_ToolTipCtrl.SetMaxTipWidth(123);
  4. m_ToolTipCtrl.Activate(TRUE);

响应:

  1. BOOL CXXXView::PreTranslateMessage(MSG* pMsg)
  2. {
  3. ASSERT(pMsg != NULL);
  4. if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
  5. {
  6. m_ToolTipCtrl.RelayEvent(pMsg);
  7. }
  8. }

光标移到到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、使关闭按钮不可用

  1. CMenu* pSysMenu = AfxGetMainWnd()->GetSystemMenu(FALSE);
  2. if (pSysMenu != NULL)
  3. {
  4. pSysMenu->EnableMenuItem(SC_CLOSE, MF_DISABLED | MF_GRAYED);
  5. }

PS:不能屏蔽在任务栏上面右击程序图标显示的”关闭窗口“功能。

16、listControl中获取所有行的checkbox状态

添加chexkbox风格:dwStyle |= LVS_EX_CHECKBOXES;

  1. CString str;
  2. for(int i=0; i<m_list2.GetItemCount(); i++)
  3. {
  4. if( m_list2.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list2.GetCheck(i))
  5. {
  6. str.Format(_T("第%d行的checkbox为选中状态"), i);
  7. AfxMessageBox(str);
  8. }
  9. }
 

http://blog.csdn.net/bigtree_mfc/article/details/47121949

MFC的杂七杂八的更多相关文章

  1. vs2010静态链接MFC库报链接错误

    由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误: uafxcw.lib(afxmem.obj) : error LNK2 ...

  2. MFC中成员变量的声明顺序与析构顺序

    第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...

  3. VC中的MFC到底是什么?

    1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API ...

  4. MFC&Halcon之实时视频监控

    上一篇实现了在MFC的窗体内显示图片,本篇介绍如何在MFC窗体内实时显示摄像头的影像. 要实现的功能是点击一个“开始”按钮,可以显示影像,再点击“停止”按钮,可以停止显示. 因为实时显示影像需要在一个 ...

  5. UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题

    UITableView 的cell 复用机制节省了内存,但是有时对于多变的自定义cell,重用时会出现界面出错(例如复用出错,出现cell混乱重影).滑动卡顿等问题,这里只简单敲下几点复用出错时的解决 ...

  6. MFC快速入门 - 菜单

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6231104.html 打开VS2010,依次打开File – New – Proje ...

  7. MFC画线功能总结

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...

  8. MFC消息映射机制以及画线功能实现

    ---此仅供用于学习交流,切勿用于商业用途,转载请注明http://www.cnblogs.com/mxbs/p/6213404.html. 利用VS2010创建一个单文档标准MFC工程,工程名为Dr ...

  9. mfc+vtk

    MFC中view类主要处理显示视图,doc类处理文档,mainframe主要为整个窗口的和工程的设置管理.由此,VTK与MFC联合编程时,需要主要的是数据操作,以及显示要很好的与MFC中的结构结合,做 ...

随机推荐

  1. QThread 与 QObject的关系

    Threads and QObjects QThread 继承 QObject..它可以发送started和finished信号,也提供了一些slot函数. QObject.可以用于多线程,可以发送信 ...

  2. jquery表单实时验证

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 使用MyEclipse搭建java Web项目开发

    转自:http://blog.csdn.net/jiuqiyuliang/article/details/36875217 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成 ...

  4. object- c 字符串操作

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  5. UML的六种关系

    UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...

  6. java Serializable和Externalizable序列化反序列化详解--转

    一.什么是序列化? “对象序列化”(Object Serialization)是 Java1.1就开始有的特性. 简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字节码,保存起来(可以保存 ...

  7. UI开发--响应者链条

    一.触摸事件处理的详细过程 用户点击屏幕后产生的一个触摸事件,经过一些列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理 ...

  8. [转] postgresql常用命令

    PS: 数据库安装后,里面的每个数据库有自己的用户密码,需要dump的时候,指定用户pg_dump -U xxx <数据库>  > 某个地址 最近一直在学习Postgresql,下面 ...

  9. Java基础知识强化92:日期工具类的编写和测试案例

    1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...

  10. 使用HighCharts实现实时数据展示

    在众多的工业控制系统领域常常会实时采集现场的温度.压力.扭矩等数据,这些数据对于监控人员进行现场态势感知.进行未来趋势预测具有重大指导价值.工程控制人员如果只是阅读海量的数据报表,对于现场整个态势的掌 ...