MFC入門基礎

来源:互联网 发布:python ajango web 编辑:程序博客网 时间:2024/05/21 05:41

使用環境:vc2005+winXP_T

1.顯示消息提示框
 //利用MessageBox顯示消息并返回值
 int a = MessageBox(TEXT( "是否确认?" ), TEXT("Warning!!"),MB_YESNO|MB_ICONQUESTION );
    if (a == IDYES)
       AfxMessageBox(_T("Yes"));
    else
       AfxMessageBox(_T("No"));

 //利用AfxMessageBox顯示消息并返回值
 if(AfxMessageBox(_T("顯示下一條信息嗎?……"), MB_YESNO | MB_ICONEXCLAMATION) == IDYES)
 {
  AfxMessageBox(_T("第二條信息."),   MB_YESNO | MB_ICONEXCLAMATION | MB_DEFBUTTON2);
 }

2.顯示一個新窗口

void CHelloSdiDlg::OnBnClickedButton2()
{
 //1.顯示一個模式對話框窗口
 CAboutDlg dlgAbout;
 dlgAbout.DoModal();

 //2.顯示一個非模式對話框窗口
 CMessage* obj;
 obj=new CMessage(this);
 obj->Create(IDD_DIALOG1);
 obj->ShowWindow(SW_RESTORE);
}


3.對EDIT取值与賦值

 //1.利用控件的ID
 //取值
 CEdit * pedit=(CEdit*)GetDlgItem( IDC_EDIT1 );
 CString str;
 pedit->GetWindowText(str);
 AfxMessageBox(str);
 //賦值
 pedit->SetWindowText(_T("sdd可在ddd"));


 //2.利用CEDIT,m_name為Control類型
 //取值
 CString strName;
 m_name.GetWindowText(strName);
 AfxMessageBox(strName);
 //賦值
 m_name.SetWindowText(_T("公大dddd"));


 //3.利用CString,m_nameValue為CString類型
 //取值
 UpdateData(true);
 AfxMessageBox(m_nameValue);
 //賦值
 m_nameValue="木ddd";
 UpdateData(false);


4.開MDI子窗口

總的來說,mdi与四個東西有關,view,doc,frame,template,
1.Template是用來生成類似Word的界面的,子窗口是同樣的.同樣的frame,同樣的doc,同樣的view
2.一個子窗口就是一個frame,在frame中包含有一個或多個view,這些view可能包含同一個doc,也可能包含不同的doc
3.view可能使用doc,也可能不使用doc.

在實際使用中,我還不知道有沒有必要使用doc,因為我認為將一個對話框作為一個子窗口,似乎更合适.

下面以CChildFrame為frame,frame中包含一個view,view中不使用doc,至于template,我還不知道在這有什么用.
void CHelloCppApp::OnUser()
{
 CCreateContext context;
 //這里我不要doc,如果要,則可以聲明一個doc變量,避免每次生成view時都生成doc
 context.m_pCurrentDoc=NULL;
 context.m_pNewViewClass=RUNTIME_CLASS(CUserView);
 //這句好像可有可無,如果要,則需聲明變量pDocTemplate
 //context.m_pNewDocTemplate=pDocTemplate;
 context.m_pLastView=(((CMainFrame *)m_pMainWnd)->GetActiveFrame() ? ((CMainFrame *)m_pMainWnd)-

>GetActiveFrame()->GetActiveView() : NULL);
 context.m_pCurrentFrame=((CMainFrame *)m_pMainWnd)->GetActiveFrame();


 CChildFrame* pFrame = new CChildFrame();
 //IDR_USERFRAME為標題及圖標,需在資源中添加相同ID
 if (!pFrame->LoadFrame(IDR_USERFRAME,WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,m_pMainWnd, &context

))return;
 pFrame->InitialUpdateFrame(NULL,TRUE);


注:下一步進一步了解vc中各控件的使用.

原创粉丝点击