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. J - Assign the task - hdu 3974(DFS建树+简单线段树)

    题意:给一些节点简单额对应关系,可以组成一个树,如果树的某一个节点更新那么他的所有子节点都要更新,中间,会有一些查询 分析:题意倒也不难理解,但是但是不知道怎么建树...于是自能百度,看了kuangb ...

  2. sql server 扩展存储过程

    C# 代码 using Microsoft.SqlServer.Server; using System; using System.Collections.Generic; using System ...

  3. Core Services 层

    Core Services层为所有的应用程序提供基础系统服务.可能应用程序并不直接使用这些服务,但它们是系统很多部分赖以建构的基础. 高阶特性 下面的部分描述一些比较常见特性,也许您正打算让您的应用程 ...

  4. 菜鸟学习 - Unity中的热更新 - LuaInterface用户指南

    [由于学习,所以翻译!] 1.介绍 LuaInterface 是 Lua 语言和 Microsoft.NET 平台公共语言运行时 (CLR) 之间的集成库. 非常多语言已经有面向 CLR 编译器和 C ...

  5. android插件化-获取apkplug框架已安装插件-03

    上一篇文章成功的将apkplug框架嵌入了应用中而且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现怎样获取全部已安装插件 一 获取框架的System ...

  6. [Angular 2] Managing State in RxJS with StartWith and Scan

    The scan operator in RxJS is the main key to managing values and states in your stream. Scan behaves ...

  7. Apache配置HTTPS协议搭载SSl配置全过程

    1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...

  8. C语言判断文件是否存在

      用函数access,头文件是io.h,原型:    int   access(const   char   *filename,   int   amode); amode参数为0时表示检查文件的 ...

  9. JNI Java调用C代码 示例

    Activity public class MainActivity extends ListActivity {     static {         System.loadLibrary(&q ...

  10. Android Studio错误

    晚上一直在折腾android studio这个东西,弄的蛋疼.. 之前是有用的,然后今天闲的没事干,更新了下,反正弄出了一大堆的错误.. 错误:failed to find Build Tools r ...