Click here to load reader
Upload
vicky
View
134
Download
1
Embed Size (px)
DESCRIPTION
第十一章 Windows 编程. Windows 编程的基本思想. MFC 概述. 典型的 Windows 程序设计. C. C. C. C. C. + +. + +. + +. + +. + +. Windows 编程. Windows 程序的特点:. 界面风格统一,便于用户掌握应用程序. 采用事件和消息机制(消息驱动). 可视化的开发工具使界面生成简单、美观统一,减少开发者劳动量. 提供丰富的程序员接口函数( API ). 面向对象的开发模式. 窗 口. 窗口是 Windows 应用程序的基本的操作单 - PowerPoint PPT Presentation
Citation preview
Windows Windows MFC Windows
WindowsAPIWindows
Windows
Windows
Windows
Windows1Windows2Windows34
typedef struct tagMSG { // msg HWND hwnd; // UINT message; // WPARAM wParam; // LPARAM lParam; // DWORD time; // POINT pt; // } MSG; Windows windowsMSG
Windows WM_CREATEWM_DESTROYWM_CLOSE,WM_MOVE , WM_SIZE , WM_PAINT WM_CHARWM_KEYDOWNWM_KEYUP WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP, WM_LBUTTONDBCLICK,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_RBUTTONDBCLICK WM_SETFOCUSWM_KILLFOCUS WM_TIMER
Windows (WNDPROC)? MS
Windows4
VCwindows Windows API MFC
int WINAPI WinMain() {//WNDCLASS wndcls;wndcls.style=CS_HREDRAW | CS_VREDRAW;wndcls.lpfnWndProc=WndProc; wndcls.lpszClassName="111"; RegisterClass(&wndcls); // hwnd=CreateWindow("111", ); // ShowWindow(hwnd,SW_SHOWNORMAL);//UpdateWindow(hwnd);Windows API
MSG msg; while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg);DispatchMessage(&msg); }return msg.wParam; }Windows API
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){switch(uMsg){case WM_CHAR: case WM_LBUTTONDOWN: case WM_DESTROY:PostQuitMessage(0); break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam);}return 0; }Windows API
MFCMicrosoft Fundation ClassC++ MFCWindows API MFCMFC
Windows4. 2. 5. 1. 3. 6. 7. 8.
Windows(Style) (*)
MyEditMyEdit
MyEdit Test 1MyEditThis is a test
MyEdit Clear 1MyEdit Test 2 MyEditYou clicked the Test 2 button Clear 2 MyEdit
MyEdit Visual C++ FileNew NewProject MFC AppWizard[exe] MyEdit OK
MyEdit Step 1 Step 1Next Step 2 About BoxUse 3D Controls Step 2Next
MyEdit Step 3 Step 3 NextMFC StandardMFC
Step 4FinishVisual C++New Project InformatinoMyEdit Visual C++ OK
MyEdit MyEditAppWizardAppWizardIDD_MYEDIT_DIALOGThe edit box toolThe push button tool
MyEdit
IDCaptionIDD_MYEDIT_DIALOGThis is MyEditIDC_EDIT1IDC_TEST1_BUTTONTest &1IDC_CLEAR1_BUTTON&Clear 1IDC_EDIT2IDC_TEST2_BUTTONTest &2IDC_CLEAR2_BUTTONCl&ear 2
MyEdit
IDCaptionIDC_EXIT_BUTTONE&xitIDC_COPY_BUTTONC&opyIDC_PASTE_BUTTONPa&ste
MyEdit
MyEdit m_Edit1IDC_EDIT1 ViewClass WizardClass Wizard Member Variables Class NameCMyEditDlg IDC_EDIT1 Add Variable Add Member Variablem_Edit1Value,Cstring,OK
Test1Clear1BN_CLIKED Test 1 ViewClass WizardClass Wizard Message Maps Class NameCMyEditDlg IDC_TEST1_BUTTONBN_CLIKED Add Function Visual C++OnTest1Button() Edit Code CMyEditDlg->IDC_TEST1_BUTTON ->BN_CLIKED
Test1Clear1BN_CLIKED OnTest1Buttonvoid CMyEditDlg::OnTest1Button() {///////////////////////////My Code Starts Here/////////////////////////m_Edit1="This is a test.";UpdateData(FALSE); //////////////////////// //My Code Ends Here /////////////////////////}UpdateDataBOOLUpdateData(FALSE)UpdateData(TRUE)
Test1Clear1BN_CLIKED OnClear1Buttonvoid CMyEditDlg::OnClear1Button() {///////////////////////////My Code Starts Here/////////////////////////m_Edit1="";UpdateData(FALSE); //////////////////////// //My Code Ends Here /////////////////////////} Clear 1
Add Member Variablem_Edit2ControlCEdit ViewClass WizardClass Wizard Member Variables Class NameCMyEditDlg IDC_EDIT2 Add Variable
Test2 ViewClassWizard CMyEditDlg->IDC_TEST2_BUTTON->BN_CLICIKED Add Funtion Visual C++OnTest2Button() Edit Code OnTest2Button() Test 2
Test2void CMyEditDlg::OnTest2Button() {////////////////////////////My Code Starts Here/////////////////////////m_Edit2.SetSel(0,-1);m_Edit2.ReplaceSel("You clicked the test 2 button."); //////////////////////////My Code Ends Here////////////////////////}
Clear 2Clear2 OnClear2Button()void CMyEditDlg::OnClear2Button() {////////////////////////////My Code Starts Here/////////////////////////m_Edit2.SetSel(0,-1);m_Edit2.ReplaceSel(" "); //////////////////////////My Code Ends Here////////////////////////}
Copy ViewClassWizard CMyEditDlg->IDC_COPY_BUTTON->BN_CLICIKED Add Funtion Visual C++OnCopyButton() Edit Code OnCopyButton()
Copyvoid CMyEditDlg::OnCopyButton() {////////////////////////////My Code Starts Here/////////////////////////m_Edit2.SetSel(0,-1);m_Edit2.Copy(); //////////////////////////My Code Ends Here////////////////////////}
Paste ViewClassWizard Add Funtion Visual C++OnPasteButton() Edit Code OnPasteButton() CMyEditDlg->IDC_PASTE_BUTTON->BN_CLICIKED
void CMyEditDlg::OnPasteButton() {////////////////////////////My Code Starts Here/////////////////////////m_Edit2.SetSel(0,-1);m_Edit2.Paste(); //////////////////////////My Code Ends Here////////////////////////}Paste
IDC_EDIT2 IDC_EDIT2 ViewProperties IDC_EDIT2 Style MultilineHorizon Scroll,Auto Hscroll,Vertical Scroll,Want Return Border
252
CWndCWndCEditCEdit:Copy(),Cut(),Paste(),Undo(), SetSel:void SetSel( int nStartChar, int nEndChar)ReplaceSelvoid ReplaceSel( LPCTSTR lpszNewText)
CDialogCDialogCMyEditDlgCObjectCCmdTargetCWndCDialogCWnd:MessagBox:int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK ); UpdateData: BOOL UpdateData(BOOL bSaveAndValidate=TRUE); CDialog:OnOK: void OnOK( ); CMyEditDlg
AppWizardWindows Visual C++Class Wizard Class Wizard
VC++
MyMenu MyMenu
MyMenu Visual C++ FileNew NewProject MFC AppWizard[exe] MyMenu OK
Step 1 Step 1Next Step 2 About BoxUse 3D Controls Step 2NextMyMenu
Step 3 Step 3 NextMFC StandardMFCMyMenu
Step 4Finish Visual C++New Project Informatino Visual C++ OKMyMenu
MyMenu
IDCaptionIDD_MYMENU_DIALOGMyMenu IDC_BEEP1_BUTTONBeep &1 IDC_BEEP2_BUTTONBeep &2 IDC_SHOW_BUTTON&Show IDC_EXIT_BUTTONE&xit
MyMenuMyMenu
AppWizard InsertResourceInsert Resource MenuNew
ViewWorkspaceMyMenu Resource Veiw Menu+IDIDR_MENU1 ID &File
IDCaption&FileID_FILE_SHOW&ShowID_FILE_EXIT&Exit BeepID_BEEP_BEEP1Be&ep1ID_BEEP_BEEP2Bee&p2HelpID_HELP_ ABOUT&About
IDD_MYMENU_DEALOG PropertiesDialog Properties MenuIDR_MENU1
IDR_MENU1CMyMenuDlg CLi2DlgIDD_MYMENU_DIALOGIDR_MENU1 IDR_MENU1CMyMenuDlg ClassWizard OKSelect ClassCMyMenuDlg
FileExit FileExitMyMenuExitCOMMANDCOMMOND ViewClass WizardClass Wizard Message Maps CMyMenuDlg->IDC_FILE_EXIT ->COMMAND
FileShowvoid CMyMenuDlg::OnFileShow() {// //////////////////////////////////MessageBox("");//////////////////////////////////}
Add Funtion Edit Code Visual C++OnFileExit()void CMyMenuDlg::OnFileExit() {// //////////////////////////////////OnOK( );//////////////////////////////////}
BeepBeep1void CMyMenuDlg::OnBeepBeep1() {// //////////////////////////////////MessageBeep(0);//////////////////////////////////}
HelpAboutvoid CMyMenuDlg::OnHelpAbout() {// //////////////////////////////////CAboutDlg dlgAbout; dlgAbout.DoModal( );//////////////////////////////////}
Beep1void CMyMenuDlg::OnBeep1Button( ) {// //////////////////////////////////OnBeepBeep1( );//////////////////////////////////}
Beep2void CMyMenuDlg::OnBeep2Button( ) {// //////////////////////////////////OnBeepBeep2( );//////////////////////////////////}
Showvoid CMyMenuDlg::OnShowButton( ) {// //////////////////////////////////OnFileShow( );//////////////////////////////////}
Exitvoid CMyMenuDlg::OnExitButton( ) {// //////////////////////////////////OnFileExit( );//////////////////////////////////}
MessageBeep(0);GetCurrentTime();
Windows
MyCheckBox
My Check BoxMy Check Box is NOT checkedMy Check Box is checkedMy Check Box
MyCeckBox Visual C++ FileNew NewProject MFC AppWizard[exe] MyCheckBox OK
Step 1 Step 1Next Step 2 About BoxUse 3D Controls MyCheckBox Step 2Next
Step 3 Step 3 NextMFC StandardMFCMyCheckBox
Step 4Finish Visual C++New Project Informatino Visual C++ OKMyCheckBox
MyCheckBox MyCheckBoxApp-Wizard AppWizard IDD_MYCHECKBOX_DIALOGThe check Box tool
IDCaptionIDD_MYCHECKBOX_DIALOGMyCheckBoxIDC_MY_CHECKBOXMy Check BoxIDC_MY_EDITBOX IDC_SHOW_BUTTON&Show IDC_HIDE_BUTTON&Hide IDC_ENABLE_BUTTON&Enable IDC_DISABLE_BUTTON&Disable IDC_EXIT_BUTTONE&xit
void CMyChekBoxDlg::OnMycheckBox() { // TODO: Add your control notification handler code here /////////// // UpdateData(TRUE); if(m_MyCheck==TRUE) m_MyEdit="My check box is checked."; else m_MyEdit="My check box is NOT checked."; UpdateData(FALSE); /////////// //}Click
MyCheckBox IDD_MYCHECK_DIALOGClassWizard
IDIDC_MY_CHECKm_MyCheckValueBOOLIDC_MY_EDITm_MyEditValueCString
MyCheckBoxMy Check BoxMyCheckBoxMy Check Box IDD_MYCHECKBOX_DIALOGWM_INITDIALOG ClassWizard ClassWizardMassage Maps
ClassWizardCMyCheckBoxDlg->CCheckBoxDlg->WM_INITDIALOG
Edit CodeBOOL CMyChekBoxDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.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);}}
// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);// Set big iconSetIcon(m_hIcon, FALSE);// Set small icon// TODO: Add extra initialization here///////////////m_MyCheck=TRUE;m_MyEdit="My Check Box is checked.";UpdateData(FALSE);////////////////return TRUE; // return TRUE unless you set the focus to a control}
Click ClassWizard ClassWizard ClassWizardMassage MapsCMyCheckBoxDlg->IDC_MY_CHECK->BN_CLICKED Add Function OnMyCheck() Edit Code
void CMyChekBoxDlg::OnMycheckBox( ) { // TODO: Add your control notification handler code here /////////// // UpdateData(TRUE); if(m_MyCheck==TRUE) m_MyEdit="My check box is checked."; else m_MyEdit="My check box is NOT checked."; UpdateData(FALSE); /////////// //}Click
void CMyChekBoxDlg::OnHideButton() { // TODO: Add your control notification handler code here /////////// // GetDlgItem(IDC_MY_CHECK) ->ShowWindow(SW_HIDE); /////////// //}HideShow GetDlgItem() GetDlgItem()IDIDC_MY_CHECK
ShowWindow()SW_HIDEShowWindow()SW_SHOWvoid CMyChekBoxDlg::OnShowButton() { // TODO: Add your control notification handler code here /////////// // GetDlgItem(IDC_MY_CHECK) ->ShowWindow(SW_SHOW); /////////// //}HideShow
DisableEnablevoid CMyChekBoxDlg::OnEnableButton() { // TODO: Add your control notification handler code here /////////// // GetDlgItem(IDC_MY_CHECK)->EnableWindow(TRUE); /////////// //}EnableWindow( )/
OnOKUpdateDataMessageBoxMessageBeepGetCurrentTimeGetDlgItem
HelpSearch Visual C++ GetDlgItem CWnd::GetDlgItem
void CMyChekBoxDlg::OnHideButton() { // TODO: Add your control notification handler code here /////////// // GetDlgItem(IDC_MY_CHECK) ->ShowWindow(SW_HIDE); /////////// //}
CDialog CDialogCWnd
CMyCheckBoxDlg CDialog
CMyCheckBoxDlgCDialogCDilalogCWndCMyCheckBoxDlgCWndGetDlgItem()ShowWindow()CWnd
Visual C++ GetDlgItem()ShowWindow()EnableWindow()
MyScroll010050
111010
MyScroll Visual C++ FileNew NewProject MFC AppWizard[exe] MyScroll OK
Step 1 Step 1Next Step 2 About Box Use 3D Controls Step 2NextMyScroll
Step 3 Step 3 NextMFC StandardMFCMyScroll
Step 4Finish Visual C++New Project Information Visual C++ OKMyScroll
MyScroll MyScrollAppWizardAppWizard IDD_MYSCROLL_DIALOGThe scroll bar tool
IDCaptionIDD_MYSCROLL_DIALOGMyScrollIDC_STATICSpeedIDC_MY_SCROLLIDC_MY_EDIT IDC_SHOW_BUTTON&Show IDC_HIDE_BUTTON&Hide IDC_ENABLE_BUTTON&Enable IDC_DISABLE_BUTTON&Disable IDC_EXIT_BUTTONE&xit
MyScroll
IDCaption IDC_MIN_BUTTON&Min IDC_MAX_BUTTONM&ax
MyScroll
MyScroll IDD_MYSCROLL_DIALOGClassWizard
IDIDC_MY_EDITm_MyEditControlCEditIDC_MY_SCROLLm_MyScrollControlCScrollBar
MyScroll500100 IDD_MYSCROLL_DIALOGWM_INITDIALOG ClassWizard ClassWizardMassage Maps 50
ClassWizardCMyScrollDlg->CMyScrollDlg->WM_INITDIALOG
BOOL CMyScorllDlg::OnInitDialog( ){ // TODO: Add extra initialization here m_MyScroll.SetScrollRange(0,100); m_MyScroll.SetScrollPos(50); char sPos[25]; itoa(m_MyScroll.GetScrollPos( ),sPos,10); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(sPos); }////////sPositoa(int,char[],int)2-36
WM_HSCROLL ClassWizard ClassWizardMassage Maps ClassWizardCMyScrollDlg->CMyScrollDlg->WM_HSCROLLOnHScroll Edit Code
if(nSBCode == SB_THUMBTRACK){ }else if(nSBCode == SB_LINEUP) { }else if(nSBCode == LINEDOWN) { }else if(nSBCode == PAGEUP) { }else if(nSBCode == PAGEDOWN) { }void CMyScorllDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
switch (nSBCode){ case SB_THUMBTRACK: break; case SB_LINEUP: break; case SB_LINEDOWN: break; case SB_PAGEUP: break; case SB_PAGEDOWN: break;}void CMyScorllDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)if(pScrollBar= =&m_MyScroll){}
void CMyScorllDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add extra initialization here char sPos[25]; { switch (nSBCode) { case SB_THUMBTRACK: m_MyScroll.SetScrollPos(nPos); itoa(m_MyScroll.GetScrollPos( ),sPos,10); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(sPos); break;if(pScrollBar= =&m_MyScroll)
case SB_LINEDOWN: iCurrent=m_MyScroll.GetScrollPos( ); iCurrent=iCurrent+1; if(iCurrent>100) iCurrent=100; m_MyScroll.SetScrollPos(iCurrent); itoa(m_MyScroll.GetScrollPos( ),sPos,10); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(sPos); break;
case SB_PAGEDOWN: iCurrent=m_MyScroll.GetScrollPos( ); iCurrent=iCurrent+10; if(iCurrent>100) iCurrent=100; m_MyScroll.SetScrollPos(iCurrent); itoa(m_MyScroll.GetScrollPos( ),sPos,10); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(sPos); break;
MinMaxResetvoid CMyScorllDlg::OnMinButton( ) {// TODO: Add your control notification handler code herem_ MyScroll.SetScrollPos(0); m_MyEdit.SetSel(0,-1);m_MyEdit.ReplaceSel("0");}
DisableEnablevoid CMyScorllDlg::OnDisableButton( ) {m_MyScroll.EnableWindow(FALSE);}
void CMyScorllDlg::OnEnableButton( ) {m_MyScroll.EnableWindow(TRUE);}
HideShowvoid CMyScorllDlg::OnShowButton( ) {m_MyScroll.ShowWindow(SW_SHOW);}void CMyScorllDlg::OnHideButton( ) {m_MyScroll.ShowWindow(SW_HIDE);}
MyScroll DisableMinMaxReset OnDisableButton()MinMaxReset OnEnableButton()MinMaxReset OnShowButton()OnHideButton()MinMaxReset
Visual C++WM_HSCROLL
GetScrollPos SetScrollRangeSetScrollPos itoa
Windows
1MyList
MyList MyList
MyList Visual C++ FileNew NewProject MFC AppWizard[exe] MyList OK
Step 1 Step 1Next Step 2 About Box Use 3D Controls Step 2NextMyList
Step 3 Step 3 NextMFC StandardMFCMyList
Step 4Finish Visual C++New Project Information Visual C++ OKMyList
MyList MyListAppWizardAppWizardAppWizard IDD_MYLIST_DIALOGList box
MyList
IDCaptionIDD_MYLIST_DIALOGMyListIDC_MY_LIST IDC_EXIT_BUTTON&Exit
MyListMyList
m_MyListControlCListBox IDD_MYLIST_DIALOGWM_INITDIALOGWM_INITDALOG ClassWizard ClassWizardMassage Maps ClassWizardCMyListDlg->CMyListDlg->WM_INITDIALOG
Edit Code
OnInitDialog()BOOL CMyListDlg::OnInitDialog(){ // TODO: Add extra initialization here
//m_MyList.AddString("I'm the first string.");m_MyList.AddString("I'm the second string.");m_MyList.AddString("I'm the third string."); //return TRUE; // return TRUE unless you set the focus to a control}
IDIDC_SELECT_EDIT m_SelectEditIDC_SELECT_EDITConrtolCEditCEdit
IDIDC_SELECT_EDITm_SelectEditControlCEdit
IDC_MY_LIST LBN_DBLCLK LBN_DBLCLK ClassWizard ClassWizardMassage Maps ClassWizardCMyListDlg->IDC_MYLIST->LBN_DBLCLK
Edit Code OnDblclkMyList() void CMyListDlg::OnDblclkMyList() { // TODO: Add your control notification handler code here // char str[50]; m_MyList.GetText(m_MyList.GetCurSel(),str); m_SelectEdit.SetSel(0,-1); m_SelectEdit.ReplaceSel(str); //}
IDCaptionIDC_ADD_EDIT IDC_ADD_BUTTON
IDIDC_ADD_EDITm_AddEditControlCEdit
void CMyListDlg::OnAddButton() {// TODO: Add your control notification handler code here //char str[50];m_AddEdit.GetWindowText(str,50);m_MyList.AddString(str); //}
IDCaptionIDC_COUNT_EDIT IDC_COUNT_BUTTONm_MyList.GetCount( )
IDIDC_COUNT_EDITm_CountEditControlCEdit
m_MyList.GetCount()void CMyListDlg::OnGetcountButton() {// TODO: Add your control notification handler code here int n; n=m_MyList.GetCount(); char s_n[5]; itoa(n,s_n,10); char str[50]; strcpy(str, "Numer of items in the list box:"); strcat(str, s_n); m_CountEdit.SetSel(0, -1); m_CountEdit.ReplaceSel(str);}
2. GetText(int,char[]) 1. GetCurSel() 5. GetWindowText(char[],int) 4. AddString() 6. itoa(int,char[], ) 3. GetCount() 7. strcpy(char[], ) 8. strcat(char[],char[]) CListBox CEdit
2MyCombo MyCombo
MyComboMyCombo
IDCaptionIDC_MY_COMBOIDC_MY_EDIT IDC_TO_BUTTON IDC_EXIT_BUTTONE&xit
IDIDC_MY_COMBOm_MyComboControlCComboBoxIDC_MY_EDITm_MyEditControlCEdit
// TODO: Add extra initialization here //m_MyCombo.AddString("I'm string a.");m_MyCombo.AddString("I'm string b.");m_MyCombo.AddString("I'm string c.");m_MyCombo.AddString("I'm string d."); //
void CMyComboDlg::OnToEditButton() {// TODO: Add your control notification handler code here // char str[25]; m_MyCombo.GetWindowText(str,25); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(str); //}
GetWindowText GetWindowText(char,int) 12
Windows
MyRadio
Color MyRadioSpeed MyRadioReport Setting
MyRadio Visual C++ FileNew NewProject MFC AppWizard[exe] MyList OK
Step 1 Step 1Next Step 2 About Box Use 3D Controls Step 2NextMyRadio
Step 3 Step 3 NextMFC StandardMFCMyRadio
Step 4Finish Visual C++New Project Information Visual C++ OKMyRadio
MyRadio MyRadioAppWizardAppWizardAppWizard IDD_MYRADIO_DIALOG
MyRadio
IDCaptionIDD_MYRADIO_DIALOGMyRadioIDC_RED_RADIORedIDC_GREEN_RADIOGreenIDC_STATICColorIDC_20_RADIO20MPHIDC_55_RADIO55MPHIDC_70_RADIO70MPHIDC_STATICSpeedIDC_MY_EDITIDC_REPORT_BUTTONReport Setting
MyRadioMyRadio
Red Group Speed Group Group Resoures Symbols
MyRadio IDD_MYRADIO_DIALOGClassWizard
IDIDC_RED_RADIOm_RedRadioControlCButtonIDC_20_RADIOm_20RadioValueintIDC_MY_EDITm_MyEditControlCEdit
IDD_MYRADIO_DIALOGWM_INITDIALOG ClassWizard ClassWizardMassage Maps ClassWizardCMyRadioDlg->CMyRadioDlg->WN_INITDIALOG
// TODO: Add extra initialization here//Red55MPH// CheckRadioButton(IDC_RED_RADIO, IDC_GREEN_RADIO, IDC_GREEN_RADIO); m_SpeedRadio=2; UpdateData(FALSE);//CheckRadioButton(1, 2, 3GreenSpeed70MPH
void CMyRadioDlg::OnReportButton() { // TODO: Add your control notification handler code here // char str[50]; int n; n=GetCheckedRadioButton( IDC_RED_RADIO,IDC_GREEN_RADIO); if(n==0) strcpy(str, "Color: None"); else if(n==IDC_RED_RADIO) strcpy(str, "Color: Red"); else if(n==IDC_GREEN_RADIO) strcpy(str, "Color: Green");
UpdateData(TRUE); if(m_SpeedRadio==0)strcat(str," Speed: 20MPH");else if(m_SpeedRadio==1)strcat(str," Speed: 55MPH"); else if(m_SpeedRadio==2)strcat(str," Speed: 70MPH"); m_MyEdit.SetSel(0,-1); m_MyEdit.ReplaceSel(str);//}UpdateData(FALSE)UpdateData(TRUE)
Cwnd CheckRadioButton(1, 2, 3); 1ID 2ID 3ID GetCheckedRadioButton(1, 2); ID 1ID 2ID
CAboutDlg dlgAbout; dlgAbout.DoModal( );ShellExecute(NULL, NULL, "MyCombo.exe", NULL, "D:\\vc\\MyComb\\Debug", SW_SHOWNORMAL);
MyDialog
MyDialog Enter Data ok Display Data
IDCaptionIDD_MYDIALOGMyDialog IDC_EXIT_BUTTONE&xit IDC_ENTERDATA_BUTTONEnterData IDC_DISPLAYDATA_BUTTONDisplay Data IDC_ENTERSPEED_BUTTONEnterSpeed IDC_DISPLAYSPEED_BUTTONDisplay Speed
InsertResourceInsert ResourceDialogNew
IDD_DIALOG1 ViewClassWizardAdd Class Create a new class OKNew Class
CMyDlgCDialogIDD_DIALOG1
CMyDlg IDD_DIALOG1CMyDlg CMyDialogDlgAdd Member Variable
dlg1 Enter DataMyDialogdlg1 Enter Datavoid CMyDialogDlg::OnEnterdataButton() {// TODO: Add your control notification handler code here//dlg1.DoModal();//}
IDD_DIADOG1IDIDC_DATA_EDITm_DataEditValueCstring
Display Data DisplayDataMyDialogvoid CMyDialog1Dlg::OnDisplaydataButton() {// TODO: Add your control notification handler code here//MessageBox(dlg1.m_DataEdit);//}
EnterSpeedMyDialog IDD_DIALOG2
IDIDD_DIALOG2IDD_SPEED_SCROLLIDC_SPEED_EDIT
IDD_DIALOG2 ViewClassWizardAdd Class Create a new class OKNew Class CSpeedDlgCDialog
CSpeedDlg IDD_DIALOG2CSpeedDlg CMyDialogDlgAdd Member Variable
Enter Speedvoid CMyDialogDlg::OnEnterspeedButton() {// TODO: Add your control notification handler code here//dlg2.DoModal();//}
CSpeedDlgBOOL CSpeedDlg::OnInitDialog() {CDialog::OnInitDialog();// TODO: Add extra initialization herem_SpeedScroll.SetScrollRange(0,100);m_SpeedScroll.SetScrollPos(50);
m_SpeedEdit=m_SpeedScroll.GetScrollPos();UpdateData(FALSE);return TRUE;}
IDD_DIALOG2 CSpeedDlgWM_HSCROLL WM_HSCROLL
ID IDC_SPEED_EDIT m_SpeedEdit Valueint IDC_SPEED_SCROLLBAR m_SpeedScroll ControlCScrollBar
void CSpeedDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) {int n;switch(nSBCode){case SB_THUMBTRACK:m_SpeedScroll.SetScrollPos(nPos); break;case SB_LINEUP:n=m_SpeedScroll.GetScrollPos(); n--;if(n100) n=100;m_SpeedScroll.SetScrollPos(n); break;WM_HSCROLL
case SB_PAGEUP:n=m_SpeedScroll.GetScrollPos(); n=n-10;if(n100) n=100;m_SpeedScroll.SetScrollPos(n); break;}m_SpeedEdit=m_SpeedScroll.GetScrollPos();UpdateData(FALSE);CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}WM_HSCROLL
Display Speedvoid CMyDialogDlg::OnDisplayspeedButton() {// TODO: Add your control notification handler code here//int n=dlg2.m_SpeedEdit;char str[50];sprintf(str,"Speed:%d",n);MessageBox(str);//}
2. 3. 4.
VCMFC (SDI) (MDI)
Word
--WM_COMMANDWindows
()
() -
MySdi
Memo
Memo 6
IDCaptionID_STATICMEMOIDD_MEMO_FORM IDC_STATICDateIDC_DATE_EDITIDC_STATICRefIDC_REF_EDITIDC_MEMO_EDIT
IDD_MEMO_FORM IDD_MEMO_FORMClassWizard
IDIDC_DATE_EDITm_DateEditValueCStringIDC_REF_EDITm_RefEditValueCStringIDC_MEMO_EDITm_MemoEditValueCString
MEMO m_DateEdit, m_RefEdit, m_MemoEdit (CMemoView) CMemoDOCAdd Member Variable CString m_Date; CString m_Ref; CString m_Memo;
OnNewDocument ClassWizardCMemoDoc->CMemoDoc->OnNewDocument
long lTime;time(&lTime);struct tm *newtime=localtime(&lTime);//char CurrentTime[30];strcpy(CurrentTime, asctime(newtime));CurrentTime[24]='\0';//m_Date=CurrentTime;m_Ref="";m_Memo="";
OnInitialUpdate() ClassWizardCMemoView->CmemoView->OnInitialUpdate
CMemoDoc *pDoc=GetDocument();m_DateEdit=pDoc->m_Date;m_RefEdit=pDoc->m_Ref;m_MemoEdit=pDoc->m_Memo;UpdateData(FALSE);
ClassWizardCMemoView->IDC_DATE->EN_CHANGE OnChangeDate()EN_CHANGEIDC_DATEOnChangeDate()
void CMemoView::OnChangeDate() {// TODO: Add your control notification handler code hereUpdateData(TRUE);CMemoDoc*pDoc=GetDocument();pDoc->m_Date=m_DateEdit;pDoc->SetModifiedFlag();}
void CMemoView::OnChangeRef() {// TODO: Add your control notification handler code hereUpdateData(TRUE);CMemoDoc*pDoc=GetDocument();pDoc->m_Ref=m_RefEdit;pDoc->SetModifiedFlag();}
void CMemoView::OnChangeRef() {// TODO: Add your control notification handler code hereUpdateData(TRUE);CMemoDoc *pDoc=GetDocument();pDoc->m_Memo=m_MemoEdit;pDoc->SetModifiedFlag();}
SaveSave AsOpen Serialize()FileSaveSave AsOpenSerialize()
void CMemoDoc::Serialize(CArchive& ar){if (ar.IsStoring()){ arm_Memo;}}