将Dialog与客户区绑定

 我们知道WTL工程的主框架CMainFrame有三个重要的成员:
        HWND m_hWndToolBar; //工具栏
        HWND m_hWndStatusBar;//状态栏
        HWND m_hWndClient;//窗口区
客户区就是我们的工作区了,如果我们想让一个窗体Dialog作为客户区怎么办呢?开始的时候我遇到了很多问题,例如窗体不能添加,窗体看不见,工具条无效了等等。。。。 最后我终于发现啦:

 1.首先我们得自定义一个Dialog,加入ID为IDD_Test并在上面加上我们美丽而可爱的各种控件.
 2.设置Dialog属性:
     
      Style:这个就必须设置为child了,要不窗体就不能作为客户区了。

      Border:最好设置为None,这样要好看点吧  呵呵,
      transparent:TRUE
      Visible:TRUE
3.修改视图类class CMainView
      该类就是我们需要显示的类了,当然对窗体做的各种操作,消息映射等都是在本类中定义。如下:

      class CMainView : public CDialogImpl<CMainView>, //继承CDialogImpl
                         public CDialogResize <CMainView>//如果需要窗体可以改变大小
{
public:
 enum { IDD = IDD_Test };              //绑定Dialog资源ID

 BOOL PreTranslateMessage(MSG* pMsg)  
 {
  return CWindow::IsDialogMessage(pMsg);
 }
 BEGIN_MSG_MAP(CMainView)
 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)//初始化映射
 CHAIN_MSG_MAP (CDialogResize <CMainView>)
 END_MSG_MAP()

 

再添加布局调整映射表:
BEGIN_DLGRESIZE_MAP(CMainDlg)
DLGRESIZE_CONTROL(IDC_EDIT1,DLSZ_SIZE_X|DLSZ_SIZE_Y)   //DLGRESIZE_CONTROL(控件ID,调整标志)
END_DLGRESIZE_MAP()

 

 

 

 LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)//初始化窗口

{

     //其他初始化

      DlgResize_Init (FALSE); //调整控件
      return 0;

}
 
};

4.在CMainFrame的OnCreate函数中创建Dialog
     LRESULT CMainFrame::OnCreate(......
      ............

      m_hWndClient = m_view.Create(m_hWnd);//初始化客户区成员,m_hWnd就是父类
   
      .........
}


   这样就将一个Dialog绑定到客户区了,呵呵 ,现在就等你设计窗口了。
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值