// DDXDemoDlg.cpp : 實作檔 // #include "stdafx.h" #include "DDXDemo.h" #include "DDXDemoDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // ========================Step 1: 把 Edit control 的資料與資料成員作關聯範例============================================================= void CDDXDemoDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); // Call base class version DDX_Text(pDX,IDC_EDIT1,num); DDV_MinMaxInt(pDX,num,1,20); } // ========================================================================================================================= BOOL CDDXDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); 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); } } SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); // ================================Step2: 設定 Edit control 初值 ================================================= num=0; UpdateData(FALSE); // 把 num 的資料 Update 到控制項範例 (False 表示要設定資料, True => 取資料) // ======================================================================================================== return TRUE; } // 當使用者按下 Ok 鈕 void CDDXDemoDlg::OnBnClickedOk() { // ================================把 num 資料 --> Edit Control 範例 ===================================== int x=this->num; num=19; UpdateData(FALSE); // num -> Edit // ======================================================================================================== //OnOK(); } // 建構子 CDDXDemoDlg::CDDXDemoDlg(CWnd* pParent /*=NULL*/) : CDialog(CDDXDemoDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CDDXDemoDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } HCURSOR CDDXDemoDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CDDXDemoDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } BEGIN_MESSAGE_MAP(CDDXDemoDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, OnBnClickedOk) END_MESSAGE_MAP() class CAboutDlg : public CDialog { public: CAboutDlg(); enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支援 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP()