【笔试/面试】MFC(七)—— 对话框

  • (1)按钮的单击,列表框的选择属于通告消息;

  • (2)控件其实也是窗口

在MFC 编程中,对资源的操作通常都是通过和资源相对应的来完成。比如与对话框资源相对应的类,即为 CDialog。

// CDialog 也是窗口类
class CDialog : public CWnd
{

一般而言,我们将对话框的弹出作为某一菜单项单击时的响应。

  • (1)调用 CDialog 类的 DoModal 方创建模态对话框,

    CTestDlg dlg;
    dlg.DoModal();
  • (2)调用 CDialog 类的 Create方创建非模态对话框,

    m_dlg.Create(IDD_DIALOG1, this);
    m_dlg.ShowWindow(SW_SHOW);

    与模态对话框不同,当我们点击非模态对话框的 OK 或者 Cancel 时,对话框并未销毁,只是隐藏了。

  • (3)如何判断一个按钮(CButton)有没有被创建

    // 没有被创建
    if (!btn.m_hWnd)
    {
        btn.Create();
    }
    else
    {
        // 被创建
        btn.DestroyWindow();
    }
    • (4)控件的布局(Layout)

    • 先左右对齐(Align ⇒ Left/Right)

    • 再上下均匀布局(Space Evenly ⇒ Across(左右间隙均匀) /Down(上下间隙均匀))

访问对话框元素(也即控件)

CWnd 类的一个成员函数:

CWnd *GetDlgItem(int nID) const;

静态文本控件

  • (1)静态文本控件默认状态下是不发送通告消息的;
  • (2)为了使一个文本控件能够响应鼠标单击消息,那么需要两个额外的步骤:
    • 改变其ID
    • 在它的属性对话框选中 Notify 选项;

你可能感兴趣的:(【笔试/面试】MFC(七)—— 对话框)