MFC中return和break用法示例

张开发
2026/4/20 8:39:29 15 分钟阅读

分享文章

MFC中return和break用法示例
直接在 VC6.0 里新建 MFC 工程就能运行的完整程序包含按钮点击界面清晰区分 break跳出循环 /switch和 return退出函数的用法。打开 VC6.0 → File → New → Projects → MFC AppWizard(exe)工程名TestReturnBreak → 选择 Dialog based基于对话框→ 一路 Finish对话框上放 两个按钮按钮 1break 测试 → IDIDC_BUTTON_BREAK按钮 2return 测试 → IDIDC_BUTTON_RETURN点击【break 测试】按钮循环执行到 i3 → 弹出 break 提示循环立刻停止循环后面的代码继续执行弹出第二句提示结论break 只跳出循环 /switch不结束函数点击【return 测试】按钮弹出 return 提示函数直接结束后面的提示框永远不会弹出结论return 直接退出整个函数break只能用在for/while 循环、switch 语句作用跳出当前一层循环 /switch函数继续执行return用在函数里MFC 里常用在按钮点击函数作用直接结束整个函数后面代码全都不执行TestReturnBreakDlg.h#if!defined(AFX_TESTRETURNBREAKDLG_H__INCLUDED_)#defineAFX_TESTRETURNBREAKDLG_H__INCLUDED_#if_MSC_VER1000#pragmaonce#endif// _MSC_VER 1000/////////////////////////////////////////////////////////////////////////////// CTestReturnBreakDlg dialogclassCTestReturnBreakDlg:publicCDialog{// Constructionpublic:CTestReturnBreakDlg(CWnd*pParentNULL);// standard constructor// Dialog Data//{{AFX_DATA(CTestReturnBreakDlg)enum{IDDIDD_TESTRETURNBREAK_DIALOG};//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CTestReturnBreakDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);// DDX/DDV supportvirtualBOOLOnInitDialog();//}}AFX_VIRTUAL// Implementationprotected:HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CTestReturnBreakDlg)afx_msgvoidOnSysCommand(UINT nID,LPARAM lParam);afx_msgvoidOnPaint();afx_msg HCURSOROnQueryDragIcon();afx_msgvoidOnButtonBreak();afx_msgvoidOnButtonReturn();//}}AFX_MSGDECLARE_MESSAGE_MAP()};#endif// !defined(AFX_TESTRETURNBREAKDLG_H__INCLUDED_)TestReturnBreakDlg.cpp// TestReturnBreakDlg.cpp : implementation file//#includestdafx.h#includeTestReturnBreak.h#includeTestReturnBreakDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]__FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App AboutclassCAboutDlg:publicCDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum{IDDIDD_ABOUTBOX};//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);// DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CTestReturnBreakDlg dialogCTestReturnBreakDlg::CTestReturnBreakDlg(CWnd*pParent/*NULL*/):CDialog(CTestReturnBreakDlg::IDD,pParent){m_hIconAfxGetApp()-LoadIcon(IDR_MAINFRAME);}voidCTestReturnBreakDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CTestReturnBreakDlg,CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_BREAK,OnButtonBreak)ON_BN_CLICKED(IDC_BUTTON_RETURN,OnButtonReturn)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CTestReturnBreakDlg message handlersBOOLCTestReturnBreakDlg::OnInitDialog(){CDialog::OnInitDialog();SetIcon(m_hIcon,TRUE);SetIcon(m_hIcon,FALSE);returnTRUE;}voidCTestReturnBreakDlg::OnSysCommand(UINT nID,LPARAM lParam){if((nID0xFFF0)IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID,lParam);}}voidCTestReturnBreakDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);intcxIconGetSystemMetrics(SM_CXICON);intcyIconGetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(rect);intx(rect.Width()-cxIcon1)/2;inty(rect.Height()-cyIcon1)/2;dc.DrawIcon(x,y,m_hIcon);}else{CDialog::OnPaint();}}HCURSORCTestReturnBreakDlg::OnQueryDragIcon(){return(HCURSOR)m_hIcon;}// break 按钮voidCTestReturnBreakDlg::OnButtonBreak(){for(inti1;i5;i){if(i3){MessageBox(循环到 i3break 跳出循环,演示,MB_OK);break;}}MessageBox(break 结束循环外代码继续执行,结果,MB_OK);}// return 按钮voidCTestReturnBreakDlg::OnButtonReturn(){MessageBox(执行 return直接退出函数,演示,MB_OK);return;MessageBox(这行永远不会执行,结果,MB_OK);}

更多文章