#include // Teksti pitäisi piirtää Paint-käsittelijässä #include "tehtava2.rh" //********************************************************************************************* class CIntDlg : public CDialog //********************************************************************************************* { int m_value; //Kentän arvo inttinä public: CIntDlg(CWnd *Parent):CDialog(IDD_INTDLG,Parent) { }; //Default constructor void SetData(int value) { m_value=value; }; //Aseta arvot void GetData(int &value) { value=m_value; }; //Palauta arvot virtual BOOL OnInitDialog() { CDialog::OnInitDialog(); //Kutsuu DoExchangea ja laittaa 0:n edittiin CEdit *edit = (CEdit *) GetDlgItem(IDC_VALUE); edit->SetSel(0,-1); //Valitse teksti edit->SetFocus(); //Valinta alussa edittiin return FALSE; }; void DoDataExchange(CDataExchange* pDX); afx_msg void TextChanged() { CString Text; GetDlgItemText(IDC_VALUE,Text); GetDlgItem(IDOK)->EnableWindow(!Text.IsEmpty()); //Jos ei tyhjä, enabloi OK-button }; DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(CIntDlg, CDialog) ON_EN_CHANGE(IDC_VALUE,TextChanged) //Käsittele editin EN_CHANGE viesti END_MESSAGE_MAP() //Käytetään hyväksi MFC:n valmiita makroja tietojen asettamiseksi //--------------------------------------------------------------- void CIntDlg::DoDataExchange(CDataExchange* pDX) //--------------------------------------------------------------- { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_VALUE, m_value); }; //********************************************************************************************* class COmaWin : public CFrameWnd //********************************************************************************************* { int value; public: COmaWin() { value = 0; Create(NULL,"Dialog Test"); }; afx_msg void OnRButtonDown( UINT nFlags, CPoint point ); DECLARE_MESSAGE_MAP() }; //------------------------------------------------------------------------ afx_msg void COmaWin::OnRButtonDown( UINT nFlags, CPoint point ) //------------------------------------------------------------------------ { CIntDlg IntDlg(this); CString Text; CDC *pDC = GetDC(); if ( !pDC ) return; //----- Modaalinen dialogi ----- IntDlg.SetData(value); if (IntDlg.DoModal() == IDCANCEL) { ReleaseDC(pDC); return; }; IntDlg.GetData(value); Text.Format("Luku oli %d, heksana 0x%X",value,value); // sprintf(s,"%d 0x%x",value,value); pDC->TextOut(point.x,point.y,Text); // pDC->TextOut(point,Text); ReleaseDC(pDC); }; BEGIN_MESSAGE_MAP(COmaWin,CFrameWnd) ON_WM_RBUTTONDOWN() END_MESSAGE_MAP() //********************************************************************************************* class COmaApp : public CWinApp //********************************************************************************************* { virtual BOOL InitInstance() { COmaWin *p = new COmaWin; m_pMainWnd = p; p->ShowWindow(SW_SHOW); p->UpdateWindow(); return TRUE; }; }; COmaApp OmaApp;