WTL的dialog是经常用到,也是非常有用的,那怎么创建新的dialog呢?步骤如下:
1.添加dialog资源
2.在界面上添加自己的控件,然后添加事件,属性,这时候就会绑定到一个类,工程会增加一个.h和.Cpp文件。
3.修改我们的.h和cpp文件,大致框架如下:
// CTestDlg 对话框
// TestDlg .h : interface of the CTestDlg class
//
/
#pragma once
class CTestDlg : public CDialogImpl<CTestDlg >
{
public:
enum { IDD = IDD_DIALOG_Test }; //指定我们的窗体ID
BEGIN_MSG_MAP(CTestDlg ) //消息映射
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};
// TestDlg.cpp : implementation of the CTestDlg class
//
/
#include "stdafx.h"
#include "resource.h"
#include "TestDlg.h"
LRESULT CTestDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
//其他的初始化
return TRUE;
}
LRESULT CTestDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
EndDialog(wID);
//其他的处理
return 0;
}
4.如果出现编译error:Window.h重包含。
解决方法是:删除stdafx.h里面的 “#include <afxwin.h>”
OK,一个dialog就添加好了,下面的工作就是为dialog的修饰和事件处理了。。。。。。。