MFC 对话框小总结

简单记录一下,以备日后用到,参数就忽略了,用的时候直接MSDN好了~

下列内容可参考:http://blog.csdn.net/yc_8301/article/details/2570951

        http://www.cnblogs.com/Totems/archive/2012/07/11/2586841.html

        http://wmnmtm.blog.163.com/blog/static/38245714200810265737699/

1.获取和设定窗口信息

  GetDlgItem( ID... ) 获取ID窗口的句柄

  CWnd::GetWindowText(str...)获取窗口内的信息

  CWnd::SetWindowText(str...)设置窗口内的信息

  CWnd::GetWindowTextLength(str...) 获取窗口内信息的长度

2.屏蔽回车和ESC键直接退出程序

    这里使用的方法很简单,就是增加虚函数OnOk和OnCancel把这两个函数的内容设置成空函数。

  步骤,在类中分别添加黄色部分,然后在.cpp文件中对这两个函数分别实现为空函数。

  

    // Generated message map functions
    //{{AFX_MSG(CHwDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnClose();
    afx_msg void OnOK();
    afx_msg void OnCancel();
    afx_msg void OnOk1();
    afx_msg void OnCancel1();
    afx_msg void OnButton1();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

3.在BUTTON上设置位图

  在BUTTON属性上,把样式中的所有者绘制和位图都勾选上。然后,我们要选择两个图标,这里我就直接用程序自带的位图编辑器自己编辑了两个位图。

然后修改DoDataExchange(...)内容,以及OnInitDialog(...)函数。

void CHwDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control( pDX, IDC_BUTTON1, m_BitmapBtn );
    //{{AFX_DATA_MAP(CHwDlg)
    //}}AFX_DATA_MAP
}

BOOL CHwDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here
    m_BitmapBtn.LoadBitmaps(IDB_BITMAP2,IDB_BITMAP1);
    return TRUE;  // return TRUE  unless you set the focus to a control
}

 

 

4.把enter键换为tab键同样的功能

  重载PreTranslateMessage(...)函数,如下,我们截取按键消息,来实现控件焦点的转移。


BOOL CHwDlg::PreTranslateMessage(MSG* pMsg) 

{
     // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
    {
        CWnd *mwnd = GetNextDlgTabItem (GetFocus()); //取得当前焦点控件的下一个控件的句柄
        if (mwnd)
        {
             mwnd->SetFocus(); //设置下一件控件得到输入焦点
             return TRUE;
        }
    }

    return CDialog::PreTranslateMessage(pMsg);
}


本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-10-07 21:18:58

MFC 对话框小总结的相关文章

c++-MFC对话框添加背景图片的问题

问题描述 MFC对话框添加背景图片的问题 按照大家的帮助,我在OnPaint函数中添加如下代码:void CsaoleiDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND reinterpret_cast<WPARAM>(dc.GetSafeHdc()) 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(

mfc c++-一个在MFC对话框程序的PICTRUE控件中绘图的问题

问题描述 一个在MFC对话框程序的PICTRUE控件中绘图的问题 本人目前正在做一个小程序,用于在数据库中读取某个字段,然后根据读取的结果在Pictrue控件中进行绘图(由一个按钮按下的事件驱动).原理为这般:bool型变量m_bIsDraw (默认为false) 用于判断是否为首次程序,如果是第一次打开则执行在OnPaint()函数中drawCircle(void)函数(用于生成直角坐标系和圆形的底图),然后将m_bIsDraw置为true,按键按下的函数中调用void CfindHistor

MFC对话框中添加状态栏的方法_C 语言

本文实例讲述了MFC对话框中添加状态栏的方法.分享给大家供大家参考.具体如下: 1.在对话框的dlg实现类里添加成员变量: CXTPStatusBar m_wndStatusBar; //状态栏(或者是CStatusBar) //在OnInitDialog方法中初始化: static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICA

MFC对话框自定义消息映射的方法_C 语言

本文实例讲述了MFC对话框自定义消息映射的方法.分享给大家供大家参考.具体实现方法如下: 1.定义消息: 复制代码 代码如下: #define WM_MYMSG (WM_USER+100) 2.定义消息响应函数: LPESULT CSLYARDlg::OnMymsg(WPARAM wParam, LPARAM lParam) { // TODO return 0; } 3.在窗口类头文件的AFX_MSG中声明消息响应函数: // Generated message map functions /

自己创建的文件夹-mfc对话框批量创建文件夹和空文件

问题描述 mfc对话框批量创建文件夹和空文件 mfc对话框批量创建文件夹和空文件,创建文件夹和文件,才学mfc,求解答,求案例 解决方案 CreateDirectory API 解决方案二: 创建空文件用CreateFile,再 CloseFile 解决方案三: 可以用windowsAPI,可以用System()执行md命令. 解决方案四: 得到sFolder了,就可以CreateFile来创建. 解决方案五: CreateDirectory/CFile::Open(...)/Close()/C

24色位图,字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙

问题描述 24色位图,字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙 24色位图(如下图)字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙

基于MFC对话框的NT服务程序框架

本附件中的程序只是一个没有任何功能的框架程序,程序本身是一个MFC对话框,也是一个NT服务,可以在进入windows之后,用户登陆之前就开始运行. 服务的名称.显示名称.依赖服务 可以在资源中的String Table中修改,分别对应于IDS_SZSERVICENAME.IDS_SZSERVICEDISPLAYNAME.IDS_SZDEPENDENCIES:需要注意的是String Table中不可以存放空字符串,所以在没有依赖服务的情况下,我在IDS_SZDEPENDENCIES中放了一个空格

bmp-新手求助,MFC对话框添加位图问题

问题描述 新手求助,MFC对话框添加位图问题 请问各位大侠,为什么文件夹里明明有bmp格式的图片,用MFC加载位图资源时显示没有呢?如图 解决方案 好像我记得有这个BUG,你把对话框右下角类型改成全部文件*.*试试 解决方案二: bmp文件格式是否符合VC的大小限制等. 解决方案三: 这是用MFC添加位图时的截图,找不到bmp资源 解决方案四: 有一写图片格式,是不能加载的.如psd文件.有一次我加载JPG文件都显示不出来,jpg倒可以,这玩意吧在一定程度上得看计算机的心情. 解决方案五: 1.

CFindReplaceDialog如何在MFC对话框的程序中使用啊

问题描述 CFindReplaceDialog如何在MFC对话框的程序中使用啊 看了几篇文章代码,都实现不了,有没有谁做过这个功能的介绍下CFindReplaceDialog的详细用法? 解决方案 p_FindReplaceDlg = new CFindReplaceDialog(); p_FindReplaceDlg->Create( true m_FindString NULL FR_DOWN this ); //创建查找对话框 p_FindReplaceDlg->ShowWindow(