原创 (转)Visual C++(包含Windows API和MFC)开发中常见问题的答案

2010-2-4 13:05 3251 3 3 分类: 软件与OS
1,简述VC6下如何进行程序的调试。 &X!A@  
在主菜单"Build"中,有一个Start Build的子菜单,它下面包含了Go菜单(快捷键为F5),选择后,程序将从当前语句进入调试运行,直到遇到断点或程序结束。 aJXn8}6  
将鼠标移动到要调试的代码行,单击鼠标右键选择“Insert/Remove Breakpoint”,或者按下F9,可以在该行上添加断点,此时断点代码行前面出现一个棕色的圈,再次选择将清除断点。进入调试状态后,Debug菜单将取代Build菜单出现在菜单栏中,它下面包含常用的调试操作,如Step Over,单步运行并不跟踪到调用的函数内部;其他还包括Step Into,Step Out, Stop Debugging等调试方法。 ej3zk  
*\!gfTS8  
2, 简述在VC6建立的工程中后缀为.cpp,.h,.rc,.dsp,.dsw的文件的作用是什么? i$GBOrZ(  
.cpp是源程序代码C++文件 xM`8VP`l  
.h是包含函数声明和变量定义的头文件 0Qkl[?Sv'  
.rc是定义资源的资源脚本文件 9Wu c<+  
.dsp是工程文件,记录当前工程的有关信息 xmD_)#F~  
.dsw是工作区文件,一个工作区可能包含一个或多个工程 7AY}R}>  
pn#_gDs[  
3, 已知一个对话框上有一个编辑框控件,ID为IDC_EDIT1,为其关联了CEdit类型的变量m_edit1,使用两种方法,说明如何改变编辑框内部的文本为"Hello",写出程序代码的片断。 X<-ZLyqj  
第一种方法:m_edit1.SetSel(0,-1);         &8GPH&[)8  
        m_edit1.ReplaceSel("Hello");   endKtX1I;E  
第二种方法:SetWindowText("Hello");     !QSe@(#LS  
|UWl9<zg  
4, 简述使用Windows API编写的一个基本的Windows应用程序框架的结构。 +44K"eh++  
Windows API编写的基本应用程序框架至少应该包含程序入口函数WinMain和窗口函数WndProc。在主函数WinMain里面包含窗口类的定义和注册,窗口的创建和显示以及消息循环。 D!valO  
=bP-{J  
5, 消息在Windows中的数据类型是什么,它有哪些成员变量,各有什么含义 *~@_?%68  
消息的数据类型是MSG,它是一个结构体,其成员变量主要包括hwnd,表示消息的窗口句柄;message代表消息的类型;wParam和lParam包含消息的附加信息,随不同的消息有所不同。 >)q
  • 2*  
    S$%t&  
    6, Windows的鼠标消息的长参数lParam与字参数wParam的含义是什么 r j\4}3Z%  
    鼠标消息的长参数lParam的低字节包含了鼠标光标位置的x坐标值,lParam的高字节包含了鼠标光标位置的y坐标值;字参数wParam内包含了指示当前按下的各种虚键状态的值。 H*aJHwZ/  
    /_ VG$YdE=  
    7, 说明使用一个非模态对话框的注意问题和用到的Windows API函数 Rlb!D!  
    使用一个非模态对话框应该注意一定要在样式中包含WS_VISIBLE才能正常显示;创建对话框使用CreateDialog函数;消息循环部分应该使用IsDialogMessage过滤消息;关闭对话框使用函数DestroyWindow。 VQSC|M&V  
    bnX-<4  
    8, 简述在MFC应用程序中UpdateData函数的作用及其参数含义与使用场合。 JJh1 A-U  
    UpdateData只有一个BOOL类型的参数,UpdateData(FALSE)一般用于对话框控件连接的变量值刷新屏幕显示;UpdateData(TRUE)用于获取屏幕数据到对话框控件连接的变量中。 FA tA-O  
    ^W E<  
    9, 列举列表框控件能够接受的三个消息类型,并说明其作用 ?I>>S(]  
    LB_ADDSTRING用于在列表框中加入一项字符串;LB_DIR用于在列表框中列出指定文件;LB_GETTEXT用于获取指定项的文本。 SFa_~4f  
    |V@@;&Yb~  
    10, 在一个对话框上添加了三个单选按钮,要使它们之间自动实现互斥,应该注意什么问题,在VC环境下如何操作? iPMYr~i|>  
    要实现一组单选按钮的自动互斥,应该让它们的控件ID值连续,并设置第一个单选按钮的Group属性,其他的不设。 _SeX gB|  
    C;mb&,W  
    11, 简述由一个文档类派生自己的文档类,并实现文档的存取需要哪些步骤。 BT6 x  
    首先为每一个文档类型从CDocument派生一个相应的文档类;然后为该文档类添加成员变量以保存数据;最后重载Serialize成员函数以实现文档数据的串行化。 bVVWh{x  
    2gYrq  
    12, 列举视图类(CView)的三个子类,并简要说明其作用。 'RB5LG*J  
    CScrollView类提供视图的滚动显示;CEditView类支持在视图中的文本编辑操作;CHtmlView类支持在视图中显示和操作html文件。 9S%G~o&x  
    :AWq<pau  
    13, Visual C++ 6.0如何进入调试状态,在调试状态下能够显示哪些调试窗口,列举三个,其作用分别是什么? x_?`?S  
    启动调试后,在View菜单的Debug Window子菜单下可以打开一些辅助调试的窗口 /_6?3nqo^9  
    Watch:显示察看当前语句和前面语句中变量值的窗口 5ePX,JM  
    Call Stack:显示察看调用堆栈的窗口 &hH@Pe[  
    Memory:显示察看内存中内容的窗口 kIqxFJ/  
    0ZNp<.M  
    14, 说明位图资源的创建及显示过程的步骤,并给出相应的Windows API函数名。 6m<UTQI  
    首先定义位图句柄HBITMAP hBitmap;第二步使用LoadBitMap加载位图;第三步,调用CreateCompatibleDC向系统申请内存设备环境句柄,并调用函数SelectObject把位图选入内存设备环境;第四步,调用BitBlt函数将位图从内存设备环境输出到指定的窗口设备环境中,从而实现显示位图。 .>dxP<_  
    %H21bcY<  
    15, 如何获取字体句柄从而实现字体的输出,并给出相应的Windows API函数名。 bnLy'Pw  
    首先定义字体句柄变量HFONT hF;然后调用函数GetStockObject获取系统的字体句柄,或者调用CreateFont得到自定义的字体句柄;最后调用SelectObject把字体句柄选入设备环境。 <`Zk]<5n  
    N$.7;u8  
    16, 列举三种按钮的类型,并说明其作用和创建方法之间的不同之处。 *) |vd8 ,  
    常用的按钮有普通按钮、单选按钮、复选框,和组框。普通按钮作用是帮助用户触发指定动作;单选按钮一般各选项之间存在互斥性;复选框用来显示一组选项供用户选择,各选项之间不存在互斥;组框主要用于把控件分成不同的组并加以说明. HNzXx`ta  
    [2msCGe}e  
    17, 要使一个静态控件显示一个位图并能接受用户输入,应该注意什么问题。 0t_=z  
    要使静态控件显示位图,必须设定其风格包含SS_BITMAP,并在创建静态控件窗口,即调用CreateWindow时指定并加载位图;要使静态控件能够接收用户输入,必须设定其风格包含SS_NOTIFY。 Rngcj9S  
    >j#[7,%*  
    18, 列举滚动条控件的四种类型的动作标识,并说明其发生的场合。 _$]ZDm50?  
    常用的滚动条控件的动作标识包括(对于垂直滚动条):SB_LINEUP表示向上滚动一行;SB_LINEDOWN表示向下滚动一行;SB_PAGEUP表示向上滚动一页;SB_PAGEDOWN表示向下滚动一页。 x9;!g x  
    V(j"/O  
    19,说明使系统定时器消息(WM_TIMER)的使用方法及其用到的Windows API函数 Wx)O^2^!  
    使用定时器消息的方法是:首先调用SetTimer函数定义定时器消息,包括消息产生的时间间隔等;然后在相应的WM_TIMER消息处理里添加定时器消息响应代码;最后调用KillTimer释放该定时器。 5q1OSbm[!  
    YRH:^!5=  
    20,MFC应用程序向导能够创建那几种类型的应用程序框架,哪些采用了文档/视图结构。 :V+ E{Le  
    MFC应用程序向导能建立基于单文档(SDI),基于多文档(MDI)和基于对话框(Dialog Based)三种应用程序的框架。其中前两种采用了文档/视图结构。 oF|r|Gkti  
    =/X2+m&>  
    21,列举五种控件,说明其作用和MFC对应的类名 wZ~xo<b.ah  
    CStatic是静态文本控件窗口,用于标注、分隔对话框或窗口中的其他控件;CButton是按钮控件窗口,为对话框或窗口中的按钮、单选按钮和多选按钮等提供一个总的类;CScrollBar是滚动条控件窗口,提供滚动条的功能,用于在对话框或窗口中的一个控件,通过它在某一范围内定位;CListBox是列表框控件窗口,列表框用于显示一组列表项,用户可以进行观察和选择;CProgressCtrl是进度条控件窗口,用于指示一个操作的进度。 VRu3d D=  
    ]G+ |Ic^  
    22,MFC的文档/视图结构中说明视图类如何访问文档类,文档类如何通知视图类进行更新,给出成员方法名? dM>S@9":,  
    MFC的文档/视图结构中,视图类通过其成员方法GetDocument获得对应文档类的指针,从而访问文档类的数据;文档类通过其成员方法UpdateAllViews通知所有视图,文档已经被修改,视图应该被重画。 OZ/ue>Z+z?  
    ;3u! #0  
    23,简述在一个基于对话框的MFC应用程序框架中添加一个编辑框(编辑框的控件ID是IDC_EDIT1,已经为其连接了变量m_edit1),要求在其中动态显示示当前时间,时间格式为“HH:mm:ss",如"15:20:16",每一秒钟刷新一次,如何实现,给出代码片断。(提示:使用定时器SetTimer) KyG%?T>/  
    实现方法:实现定时器,每隔一秒钟发出WM_TIMER消息,并在该消息相应函数中添加代码更新编辑框内容。   #:}Z'R)Ob  
    第一步:为对话框的WM_INITDIALOG的消息响应函数OnInitDialog中添加代码: SetTimer(1,100,NULL);     buU]A  
    第二步: 为对话框添加WM_TIMER的消息相应函数OnTimer,并在其中添加代码:     /+=l|tWL;  
        CTime tNow; '1U>JK*n  
        tNow="CTime::GetCurrentTime"(); ^G{T;IM:  
        CString sNow="tNow".Format("%I:%M:%S"); n gL Yhpe  
        m_edit1.SetSel(0,-1); W|tnahc  
        m_edit1.ReplaceSel(sNow); oo7">}+mx  
    第二步: 为对话框的WM_DESTRYOY的消息响应函数OnDestroy中添加代码 KillTimer(1);
  • PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    EE直播间
    更多
    我要评论
    0
    3
    关闭 站长推荐上一条 /3 下一条