第4章mfc基本应用程序的建立内容摘要:
s here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() // 声明消息映射 }。 ... MFC AppWizard 代码中, //{{AFX_VIRTUAL(类名 ) ... //}}AFX_VIRTUAL 是 ClassWizard定义的专门用作虚函数重载的标记,表示该程序块中的虚函数的重载是由 ClassWizard来自动管理的,一般不需要去更改。 同样, //{{AFX_MSG(类名 ) ... //}}AFX_MSG 是 ClassWizard定义的专门用作消息映射声明的标记。 代码中的 “ //TODO:”以及英文等注释是由 MFC AppWizard为用户自动生成的。 若不需要这些注释,可在应用程序向导的第五步对话框中,将 “ Would you like to generate source file ments?”项选为 “ No,thank you”。 下面再来看看该 Ex_SDIHello应用程序的 : include // 预编译处理的头文件 include // 应用类的头文件 include // 主框架类的头文件 include // 文档类的头文件 include // 视图类的头文件 MFC AppWizard //消息映射开始 BEGIN_MESSAGE_MAP(CEx_SDIHelloApp, CWinApp) // 消息映射宏 //{{AFX_MSG_MAP(CEx_SDIHelloApp) // 映射 “ 帮助 ” 菜单项中的 “ 关于 Ex_SDIHello”命令消息,当用户选择了 // 该命令时,将执行函数 OnAppAbout ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // NOTE the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // 映射 “ 文件 ” 菜单项中的 “ 新建 ” 和 “ 打开 ” 命令消息,当用户选择了“ 新建 ” // 或 “ 打开 ” 命令时,将相应执行 CWinApp::OnFileNew或CWinApp::OnFileOpen ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // 映射 “ 文件 ” 菜单项中的 “ 打印设置 ” 命令消息,当用户选择了 // 该命令时,将执行函数 CWinApp::OnFilePrintSetup ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() // 消息映射宏 MFC AppWizard // 消息映射开始结束 CEx_SDIHelloApp::CEx_SDIHelloApp() // 构造函数 { } CEx_SDIHelloApp theApp。 // 定义的一个应用类对象,表示一个实例 BOOL CEx_SDIHelloApp::InitInstance() { ... } ... void CEx_SDIHelloApp::OnAppAbout() { CAboutDlg aboutDlg。 // 定义的 CAboutDlg对象 ()。 // 调用相应的库函数,显示 CAboutDlg对话框 } 代码中, //{{AFX_MSG_MAP(类名 ) .. //}}AFX_MSG_MAP 是 ClassWizard定义的专门用作消息映射的标记,表示该程序块中的消息映射函数是由 ClassWizard来自动管理的,用户一般不需要去更改。 MFC AppWizard 最主要的 InitInstance函数体代码: BOOL CEx_SDIHelloApp::InitInstance() { // 若用户在 MFC AppWizard的第三步中,选中了 “ ActiveX Controls”, // 则表示所创建的应用程序支持 ActiveX控件 AfxEnableControlContainer()。 // 若用户在 MFC AppWizard的第四步中,选中了 “ 3D controls” // 则表示所创建的应用程序支持 Windows 95版本前的 3D控件风格 ifdef _AFXDLL Enable3dControls()。 // 使用动态的 3D控件 else Enable3dControlsStatic()。 // 使用静态的 3D控件 endif // 在系统注册表中登记应用程序的主键值,以便将一些与应用程序 // 相关的参数存放在该主键值下 SetRegistryKey(_T(Local MFC AppWizardGenerated Applications))。 // 从注册表中调入应用程序的一些标准参数值 . LoadStdProfileSettings()。 MFC AppWizard // 若用户在 MFC AppWizard的第一步中,选择了 “ Single document”类型, // 则进行下列的单文档模板的创建及其初始化操作。 CSingleDocTemplate* pDocTemplate。 // 定义一个单文档模板指针变量 pDocTemplate = new CSingleDocTemplate(// 登记并创建单文档应用程序模板 IDR_MAINFRAME, // 菜单、快捷键等的资源标识号 RUNTIME_CLASS(CEx_SDIHelloDoc), // 文档类 RUNTIME_CLASS(CMainFrame), // 主框架窗口类 RUNTIME_CLASS(CEx_SDIHelloView))。 // 视图类 AddDocTemplate(pDocTemplate)。 // 向应用程序添加文档模板 // 分列命令行标准命令如 DDE、文件打开等 CCommandLineInfo cmdInfo。 ParseCommandLine(cmdInfo)。 // 传送命令行指定的命令,并执行相应的操作 if (!ProcessShellCommand(cmdInfo)) return FALSE。 // 对主框架窗口进行初始化以便显示和更新 m_pMainWndShowWindow(SW_SHOW)。 m_pMainWndUpdateWindow()。 return TRUE。 } MFC AppWizard RUNTIME_CLASS是一个运行类的宏定义,返回 CRuntimeClass类指针。 借助 CRuntimeClass类结构能在应用程序运行过程中获得该类对象及其基类的相关信息,从而可以实现运行时类型检查。 CSingleDocTemplate是一个单文档模板类,将用户应用程序项目中的资源、主框架窗口类、文档类以及视图类建立了联系。 AddDocTemplate负责将这些联系嵌入应用程序中。 类似的,还有用于多文档应用程序的多文档模板类CMultiDocTemplate,但与单文档不同的是,多文档模板可以创建多个视、多个文档, 很多程序都需要从命令行输入参数,它是通过 ParseCommandLine函数保存在由 CCommandLineInfo类定义的对象中,命令行最终的命令和参数是通过ProcessShellCommand执行的。 与 DOS命令行操作不同的是, Windows应用程序命令行参数是通过选择 “ 开始 ” “ 运行 ” 菜单命令,在弹出的运行对话框中指定的。 MFC AppWizard 文档类 CEx_SDIHelloDoc CEx_SDIHelloDoc类的 : ... class CEx_SDIHelloDoc : public CDocument { protected: CEx_SDIHelloDoc()。 // 构造函数 DECLARE_DYNCREATE(CEx_SDIHelloDoc) ... public: //{{AFX_VIRTUAL(CEx_SDIHelloDoc) public: virtual BOOL OnNewDocument()。 // 当新建一个文档时,自动调用该函数 virtual void Serialize(CArchiveamp。 ar)。 // 当文档打开或保存时,自动调用该函数 //}}AFX_VIRTUAL // Implementation public: virtual ~CEx_SDIHelloDoc()。 ifdef _DEBUG // 若应用程序是调试版本 virtual void AssertValid() const。 virtual void Dump(CDumpContextamp。 dc) const。 endif ... MFC AppWizard // 产生消息映射函数 protected: //{{AFX_MSG(CEx_SDIHelloDoc) // NOTE the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }。 ... 用户的文档类 CEx_SDIHelloDoc是从基类 CDocument派生而来。 AssertValid和 Dump是用于调试版本的两个虚函数。 AssertValid的目的是启用 “ 断言 ” 机制来检验对象的正确性、合法性,而 Dump的目的是为他人分析用户自己定义的类提供一种机制,用来输出类的名称或其他数据内容。 MFC AppWizard 视图类 CEx_SDIHelloView CEx_SDIHelloView类的 : class CEx_SDIHelloView : public CView { protected。第4章mfc基本应用程序的建立
相关推荐
),將類別實體化成物件實例,如下所示: joe = new Customer(陳會安 ,新北巿 )。 程式碼建立 Customer類別的物件,物件變數 joe的值不是物件本身,而是參考到此物件的指標。 422 Java的類別與物件 –存取物件變數與方法 在建立物件後,我們就可以存取物件的變數與呼叫方法,以 Customer類別建立的 joe物件為例,如下所示: = 37。 str += ()
子邮件的英文名称叫做 Email,全称是: Electronic Mail,也就是利用电子方式进行传输的信件。 • 从工作原理上来说,电子邮件传输方式跟普通信件传递具有更大的类似性,而跟电话传输方式相比差别却很大。 电话系统主要是基于一百年前贝尔所发明的电话原理 电路交换方式时,通话过程中通信双方始终都必须占据一条线路。 电子邮件则采用另一种不同的方式 ——
公式为 6. 可看作是均值的一种变形 nniinnm xxxxG 121 nxxxxnGniinm 121lg)lglg( l g1lg STAT 几何平均数 (例题分析 ) 【 例 】 一位投资者持有一种股票 , 1996年 、1997年 、 1998年和 1999年收益率分别为%、 %、 %、 %。 计算该投资者在这四年内的平均收益率。
標與二維陣列 方法 2 第二個方法是使用 tables[][]陣列名稱的指標變數,其運算式如下所示: *(*(tables + i) + j) tables是二維陣列的名稱,可以將它視為是一個指向指標的指標變數,在中間括號部分的運算式,如下所示: *(tables+i) 上述指標運算可以當作是第一欄tables[ROWS][0]的指標運算,取值運算取得的是: •
SO2。 其余物质是 F为Fe2(SO4) G为 FeSO4。 【 答案 】 (1)FeS (2)4FeS2+ 11O2 2Fe2O3+ 8SO2 2Fe3+ + Fe===3Fe2+ (3)生成白色沉淀,并迅速变成灰绿色,最终变成红褐色 铜及其化合物 1.单质铜的性质 (1)物质性质:紫红色固体 (2)与非金属反应: 2Cu+ O2 2CuO 2Cu+ S Cu2S Cu+ Cl2 CuCl2