2024年6月12日发(作者:)

第12章习题

一、概念题

1.解答要点:

⑴ 控制台应用程序。

⑵ 基于框架窗口的应用程序。

⑶ 基于文档/视图结构的应用程序。

⑷ 基于对话框的应用程序。

2.解答要点:

在Windows操作系统中,无论是系统产生的动作,还是用户运行应用程序产生的动作都称

为事件(events)产生的消息。如果程序需要消息做出反应,必然要调用相应的处理函数,如果没

有定义处理函数,则该消息被忽略。编制消息处理函数被称作消息映射。

3.解答要点:

文档类CDocument的派生类对象规定了应用程序的数据。

视图类的几个重要成员函数:GetDocument()、OnDraw()、OnInitialUpdate()等。

4.略。

5.解答要点:

⑴ 非模式对话框的模板资源在设计时必须选中Visible属性(在属性对话框的More Styles页

中设置),若没有选中,则必须调用对话框类的成员函数ShowWindow;否则对话框不可见,而模

式对话框无需设置此属性。

⑵ 非模式对话框通过调用CDialog::Create函数来启动,而模式对话框使用CDialog:: DoModal

函数来启动。由于Create函数不会启动新的消息循环,非模式对话框与应用程序共用同一个消

息循环,这样非模式对话框就不会垄断用户的输入。Create函数在显示了非模式对话框后就立

即返回,而DoModal函数是在模式对话框被关闭后才返回的。

⑶ 非模式对话框对象是用new操作符动态创建的,而模式对话框以对象变量的形式出现的。

⑷ 非模式对话框的关闭是由用户单击OK或Cancel按钮完成的,与模式对话框不同,程序员必

须分别重载这两个函数,并且在其中调用CWnd::DestroyWindow函数来关闭对话框。该函数是用

于关闭窗口。

⑸ 必须有一个标志表明非模式对话框是否打开。应用程序根据该标志决定是打开一个新对话框,

还是仅激活原来已经打开的对话框。通常可以用拥有者窗口中指向非模式对话框对象的指针(因

为非模式对话框对象是用new操作符动态创建)作为这个标志,当对话框关闭时给该指针赋NULL

值,表明该对话框对象已不存在了。

二、填空题

1.输入消息、控制消息、系统消息、用户消息

2.WM_LBOTTONDOWN OnLButtonDown

3.CDC

4.设备环境

5.模态对话框 非模态对话框

6.构造函数 OnInitDialog()函数

7.CColorDialog、CFileDialog、CFindReplaceDialog、CFontDialog、CPrintDialog

8.CeditView

9.OnNewDocument()

10.Invalidate()或InvalidateRect()