• MFC的杂七杂八


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

    2、动态移动控件位置

    3、GDI+绘制文字

    4、编辑框跳变显示

    5、最大化显示

    6、Uint uFormat常用值

    7、获取菜单个数

    8、添加气泡提示

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

    10、隐藏菜单

    11、修改标题栏标题

    12、动态加载标题栏图标

    13、动态改变菜单不可用

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

    15、使关闭按钮不可用

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

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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+绘制文字

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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.   
    9. graphics.DrawString((const WCHAR*)(LPCTSTR)drawString,  
    10.     -1,   
    11.     &font,  
    12.     pf,  
    13.     &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;

    初始化:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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);  



    响应:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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、使关闭按钮不可用

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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;

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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 

  • 相关阅读:
    mysql最后一个内容orm
    mysql第五天:
    mysql第二天 数据的增删改查补充及外键
    MYsql 初识
    第二天openc的内容:图片的缩放、旋转、格式转换
    第二个内容第一天 opencv的基本内容:
    第五十七天 bom 的新知识
    第五十六天jQurey的内容新增:
    第五十五天jQery内容的进阶
    windows11 upgrade
  • 原文地址:https://www.cnblogs.com/findumars/p/5801431.html
Copyright © 2020-2023  润新知