开发者社区> 青夜之衫> 正文

Visual C++开发中常见问题的答案

简介:
+关注继续查看

1、简述VC6下如何进行程序的调试

  在主菜单"Build"中,有一个Start Build的子菜单,它下面包含了Go菜单(快捷键为F5),选择后,程序将从当前语句进入调试运行,直到遇到断点或程序结束。

  将鼠标移动到要调试的代码行,单击鼠标右键选择“Insert/Remove Breakpoint”,或者按下F9,可以在该行上添加断点,此时断点代码行前面出现一个棕色的圈,再次选择将清除断点。进入调试状态后,Debug菜单将取代Build菜单出现在菜单栏中,它下面包含常用的调试操作,如Step Over,单步运行并不跟踪到调用的函数内部;其他还包括Step Into,Step Out, Stop Debugging等调试方法。

  2、简述在VC6建立的工程中后缀为.cpp,.h,.rc,.dsp,.dsw的文件的作用是什么?

   .cpp是源程序代码C++文件

   .h是包含函数声明和变量定义的头文件

   .rc是定义资源的资源脚本文件

   .dsp是工程文件,记录当前工程的有关信息

   .dsw是工作区文件,一个工作区可能包含一个或多个工程

  3、已知一个对话框上有一个编辑框控件,ID为IDC_EDIT1,为其关联了CEdit类型的变量m_edit1,使用两种方法,说明如何改变编辑框内部的文本为"Hello",写出程序代码的片断。

  第一种方法:

  m_edit1.SetSel(0,-1);

  m_edit1.ReplaceSel("Hello");

  第二种方法:

  SetWindowText("Hello");

  4、简述使用Windows API编写的一个基本的Windows应用程序框架的结构。

  Windows API编写的基本应用程序框架至少应该包含程序入口函数WinMain和窗口函数WndProc。在主函数WinMain里面包含窗口类的定义和注册,窗口的创建和显示以及消息循环。

  5、消息在Windows中的数据类型是什么,它有哪些成员变量,各有什么含义

  消息的数据类型是MSG,它是一个结构体,其成员变量主要包括hwnd,表示消息的窗口句柄;message代表消息的类型;wParam和lParam包含消息的附加信息,随不同的消息有所不同。

  6、Windows的鼠标消息的长参数lParam与字参数wParam的含义是什么

  鼠标消息的长参数lParam的低字节包含了鼠标光标位置的x坐标值,lParam的高字节包含了鼠标光标位置的y坐标值;字参数wParam内包含了指示当前按下的各种虚键状态的值。

  7、说明使用一个非模态对话框的注意问题和用到的Windows API函数

  使用一个非模态对话框应该注意一定要在样式中包含WS_VISIBLE才能正常显示;创建对话框使用CreateDialog函数;消息循环部分应该使用IsDialogMessage过滤消息;关闭对话框使用函数DestroyWindow。

  8、简述在MFC应用程序中UpdateData函数的作用及其参数含义与使用场合。

  UpdateData只有一个BOOL类型的参数,UpdateData(FALSE)一般用于对话框控件连接的变量值刷新屏幕显示;UpdateData(TRUE)用于获取屏幕数据到对话框控件连接的变量中。

  9、列举列表框控件能够接受的三个消息类型,并说明其作用

  LB_ADDSTRING用于在列表框中加入一项字符串;LB_DIR用于在列表框中列出指定文件;LB_GETTEXT用于获取指定项的文本。

  10、在一个对话框上添加了三个单选按钮,要使它们之间自动实现互斥,应该注意什么问题,在VC环境下如何操作?

  要实现一组单选按钮的自动互斥,应该让它们的控件ID值连续,并设置第一个单选按钮的Group属性,其他的不设。

  11、简述由一个文档类派生自己的文档类,并实现文档的存取需要哪些步骤。

  首先为每一个文档类型从CDocument派生一个相应的文档类;然后为该文档类添加成员变量以保存数据;最后重载Serialize成员函数以实现文档数据的串行化。

  12、列举视图类(CView)的三个子类,并简要说明其作用。

  CScrollView类提供视图的滚动显示;CEditView类支持在视图中的文本编辑操作;CHtmlView类支持在视图中显示和操作html文件。

  13、Visual C++ 6.0如何进入调试状态,在调试状态下能够显示哪些调试窗口,列举三个,其作用分别是什么?

  启动调试后,在View菜单的Debug Window子菜单下可以打开一些辅助调试的窗口

  Watch:显示察看当前语句和前面语句中变量值的窗口

  Call Stack:显示察看调用堆栈的窗口

  Memory:显示察看内存中内容的窗口

  14、说明位图资源的创建及显示过程的步骤,并给出相应的Windows API函数名。

  首先定义位图句柄HBITMAP hBitmap;第二步使用LoadBitMap加载位图;第三步,调用CreateCompatibleDC向系统申请内存设备环境句柄,并调用函数SelectObject把位图选入内存设备环境;第四步,调用BitBlt函数将位图从内存设备环境输出到指定的窗口设备环境中,从而实现显示位图。

  15、如何获取字体句柄从而实现字体的输出,并给出相应的Windows API函数名。

  首先定义字体句柄变量HFONT hF;然后调用函数GetStockObject获取系统的字体句柄,或者调用CreateFont得到自定义的字体句柄;最后调用SelectObject把字体句柄选入设备环境。

  16、列举三种按钮的类型,并说明其作用和创建方法之间的不同之处。

  常用的按钮有普通按钮、单选按钮、复选框,和组框。普通按钮作用是帮助用户触发指定动作;单选按钮一般各选项之间存在互斥性;复选框用来显示一组选项供用户选择,各选项之间不存在互斥;组框主要用于把控件分成不同的组并加以说明.

  17、要使一个静态控件显示一个位图并能接受用户输入,应该注意什么问题。

  要使静态控件显示位图,必须设定其风格包含SS_BITMAP,并在创建静态控件窗口,即调用CreateWindow时指定并加载位图;要使静态控件能够接收用户输入,必须设定其风格包含SS_NOTIFY。

  18、列举滚动条控件的四种类型的动作标识,并说明其发生的场合。

  常用的滚动条控件的动作标识包括(对于垂直滚动条):SB_LINEUP表示向上滚动一行;SB_LINEDOWN表示向下滚动一行;SB_PAGEUP表示向上滚动一页;SB_PAGEDOWN表示向下滚动一页。

  19、说明使系统定时器消息(WM_TIMER)的使用方法及其用到的Windows API函数

  使用定时器消息的方法是:首先调用SetTimer函数定义定时器消息,包括消息产生的时间间隔等;然后在相应的WM_TIMER消息处理里添加定时器消息响应代码;最后调用KillTimer释放该定时器。

  20、MFC应用程序向导能够创建那几种类型的应用程序框架,哪些采用了文档/视图结构。

  MFC应用程序向导能建立基于单文档(SDI),基于多文档(MDI)和基于对话框(Dialog Based)三种应用程序的框架。其中前两种采用了文档/视图结构。

  21、列举五种控件,说明其作用和MFC对应的类名

  CStatic是静态文本控件窗口,用于标注、分隔对话框或窗口中的其他控件;CButton是按钮控件窗口,为对话框或窗口中的按钮、单选按钮和多选按钮等提供一个总的类;CScrollBar是滚动条控件窗口,提供滚动条的功能,用于在对话框或窗口中的一个控件,通过它在某一范围内定位;CListBox是列表框控件窗口,列表框用于显示一组列表项,用户可以进行观察和选择;CProgressCtrl是进度条控件窗口,用于指示一个操作的进度。

  22、MFC的文档/视图结构中说明视图类如何访问文档类,文档类如何通知视图类进行更新,给出成员方法名?

  MFC的文档/视图结构中,视图类通过其成员方法GetDocument获得对应文档类的指针,从而访问文档类的数据;文档类通过其成员方法UpdateAllViews通知所有视图,文档已经被修改,视图应该被重画。

  23、简述在一个基于对话框的MFC应用程序框架中添加一个编辑框(编辑框的控件ID是IDC_EDIT1,已经为其连接了变量m_edit1),要求在其中动态显示示当前时间,时间格式为“HH:mm:ss",如"15:20:16",每一秒钟刷新一次,如何实现,给出代码片断。(提示:使用定时器SetTimer)

  实现方法:实现定时器,每隔一秒钟发出WM_TIMER消息,并在该消息相应函数中添加代码更新编辑框内容。

  第一步:为对话框的WM_INITDIALOG的消息响应函数OnInitDialog中添加代码: SetTimer(1,100,NULL);

  第二步: 为对话框添加WM_TIMER的消息相应函数OnTimer,并在其中添加代码:

CTime tNow;

tNow=CTime::GetCurrentTime();

CString sNow=tNow.Format("%I:%M:%S");

m_edit1.SetSel(0,-1);

m_edit1.ReplaceSel(sNow);

  第二步: 为对话框的WM_DESTRYOY的消息响应函数OnDestroy中添加代码 KillTimer(1);

本文转自BlogJava 新浪blog的博客,原文链接:Visual C++开发中常见问题的答案,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
移动开发之常见问题
以下内容只进行常规测试,如果出现其他问题,请留言 1.获取浏览器的高度 document.documentElement.clientHeight 备注: alert($(window).height()); //浏览器当前窗口可视区域高度alert($(document).
678 0
大数据开发—常见问题(1)
我们在进行大数据开发过程中,会遇到各种问题,本文将定期收集整理一些在使用阿里云数加 MaxCompute 和 大数据开发套件 过程中遇到的常见问题,供大家参考~
2949 0
flutter开发常见的问题
Flutter 使用了一种全新的方法,您可以使用 widgets代替 Views 。Android 中的 View 主要是布局的一个元素,但在 Flutter 中,Widget 几乎就是一切。从按钮到布局结构的一切都是小部件。这里的优势在于可定制性。想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西, 而不会打破布局限制。这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。
43 0
iOS逆向开发常见问题的解决方案
iOS逆向开发常见问题的解决方案
14 0
Flutter面试常见开发问题
lutter 使用了一种全新的方法,您可以使用 widgets代替 Views 。Android 中的 View 主要是布局的一个元素,但在 Flutter 中,Widget 几乎就是一切。从按钮到布局结构的一切都是小部件。这里的优势在于可定制性。想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。
46 0
+关注
1040
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载