您现在的位置:计算机技术学习网 > 技术中心 > 编程开发 > C >

VC实用小知识总结 (二)

来源:网络收集 责任编辑:栏目编辑 发表时间:2013-07-01 07:33 点击:
(26) 如何编程结束应用程序?
  这是个很简单又是编程中经常要遇到的问题.
  向窗口发送 WM_CLOSE消息,调用 CWnd::OnClose成员函数.允许对用户提示是否保存修改过的数据.



  系列文章:VC实用小知识总结(一)

  Example: AfxGetMainWindow()->SendMessage(WM_CLOSE)

  还可以创建一个自定义的函数 Terminate Window


  void Terminate Window(LPCSTR pCaption)
  {
  CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption)

  if (pWnd)

  pWnd ->SendMessage(WM_CLOSE)
  }

  说明: FindWindow函数不是提倡的做法,因为它无法处理标题栏自动改变,比如我们要检测 Notepad是不是已运行而事先不知道Notepad的标题栏,这时FindWindow就无能为力了,可以通过枚举 windows任务列表的办法来实现。在机械出版社"Windows 95 API开发人员指南"一书有比较详细的介绍,这里就不再多说乐。

  (27) 如何创建和使用无模式对话框
  MFC将模式和无模式对话封装在同一个类中,但是使用无模式对话需要几个对话需要几个额处的步骤。首先,使用资源编辑器建立对话资源并使用ClassWizard创建一个CDialog的派生类。模式和无模式对话的中止是不一样的:模式对话通过调用CDialog : : EndDialog 来中止,无模式对话则是调用CWnd: : DestroyWindow来中止的,函数CDialog : : OnOK和CDialog : : OnCancel调用EndDialog ,所以需要调用DestroyWindow并重置无模式对话的函数。


  void CSampleDialog : : OnOK ( )
  {
  // Retrieve and validate dialog data .
  if (! UpdateData (TRUE) )
  {
  // the UpdateData rountine
  will set focus to correct item TRACEO (" UpdateData failed during dialog termination .\n")
  return
  }

  //Call DestroyWindow instead of EndDialog .
  DestroyWindow ( )
  }

  void CSampleDialog : : OnCancel ( )
  {
  //Call DestroyWindow instead of EndDialog .
  DestroyWindow ( )
  }

  其次,需要正确删除表示对话的C++对象。对于模式对来说,这很容易,需要创建函数返回后即可删除C++对象;无模式对话不是同步的,创建函数调用后立即返回,因而用户不知道何时删除C++对象。撤销窗口时工作框调用CWnd : : PostNcDestroy,可以重置该函数并执行清除操作,诸如删除this指针。


  void CSampleDialog : : PostNcDestroy ( )
  {
  // Declete the C++ object that represents this dialog.
  delete this

  最后,要创建无模式对话。可以调用CDialog : : DoModal创建一个模式对放,要创建一个无模式对话则要调用CDialog: : Create。下面的例子说明 了应用程序是如何创建无模式对话的: 象;无模式对话不是同步的,创建函数调用后立即返回,


  void CMainFrame : : OnSampleDialog ( )
  {
  //Allocate a modeless dialog object .
  CSampleDilog * pDialog =new CSampleDialog
  ASSERT_VALID (pDialog) Destroy ( )

  //Create the modeless dialog . represents this dialog.
  BOOL bResult = pDialog —> Creste (IDD_IDALOG)
  ASSERT (bResult )
  }

  (28) 如何防止主框窗口在其说明中显示活动的文档名
  创建主框窗口和MDI子窗口进通常具有FWS_ADDTOTITLE风格位,如果不希望在说明中自动添加文档名, 必须禁止该风格位, 可以使用ClassWizard重置

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1