精华内容
下载资源
问答
  • windows菜单的约定
    万次阅读
    2016-12-24 14:48:13

    一. 单选题 

    1. 在Windows编程约定中,应用程序接口的英文缩写是( A )。 

    A. API        B. SDI       C. GDI        D. MDI 

     

     2. 在Windows编程约定中,软件开发包的英文缩写是(  C  )。

     A. API       B. SDI        C. SDK       D. MDI 

     

     3. 在Windows编程约定中,图像设备接口的英文缩写是( C )。 

    A. API                 B. SDI                 C. GDI                D. MDI

     

    4. 以下对应于unsigned long 的数据类型为:( B ) 

    A. WORD                    B. DWORD       C. INT                D. BYTE 

     

     5. 下列选项中,不属于匈牙利命名法属性部分的是( D )。 

    A. g_                  B. m_                 C. c_                   D. d_ 

     

     6. 

    如果要严格按照匈牙利命名法命名1个全局窗口句柄,以下变量命名正确的是

    ( A )。 

    A. g_hWnd       B. m_hWnd      C. g_pWnd       D. m_pWnd  

     

    7. 下列Windows数据格式中,代表设备句柄的是( B )。 

    A. HWND          B. HDC              C. HINSTANCE D. HFONT 

     

    8. "在一个窗口的正常运行的Windows程序中,把主窗口创建语句做如下改动: hWnd = CreateWindow(NULL, szTitle, WS_OVERLAPPEDWINDOW, i. CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, ii. hInstance, NULL); 

    则下列说法正确的是( C )。"  

    B. 程序仍然正常运行,与改动前相比没有变化 

    C. 程序出现编译错误 

    D. 程序编译通过,但没有窗口显示 

    E. 程序正常运行,窗口标题变为NULL 

     

     9. 典型的Windows窗口程序的流程为:( A )  

    A. 注册窗口类->创建窗口->显示窗口->更新窗口->消息循环 

    B. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 

    C. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 

    D. 注册窗口类->创建窗口->更新窗口->显示窗口->消息循环  

     

    10. 菜单编辑器中,如果要设置某个项为分隔线,那么这个项的哪个属性为true。(  D  ) 

    A. Visible           B. Grayed         C. Enable                    D. Separator 

     

    11. 在Windows消息机制中,菜单消息类型是:( B ) 

    A. WM_PAINT  

    B. WM_COMMAND  

    C. WM_CREATE  

    D. WM_CLOSE 

     

    12. 在Windows编程中,代表键盘的"↑"键的虚拟键值是(  A  )。 

    A. VK_UP  

    B. WM_KEYDOWN  

    C. WM_KEYUP  

    D. VK_DOWN 

     

    13. 在Windows编程中,响应键盘按键按下消息的Windows消息是( B )。 

    A. VK_UP 

    B. WM_KEYDOWN  

    C. WM_KEYUP  

    D. VK_DOWN 

     

    14. 在Windows编程中,按下键盘的"A"键后,返回的Windows消息是( B )。 

    A. VK_A                      B. WM_KEYDOWN           C. A                    D. DIK_A 

     

    15. 在Windows编程中,按下鼠标左键产生的Windows消息是( B )。 

    A. WM_KEYDOWN  

    B. WM_LBUTTONDOWN  

    C. WM_LEFT  

    D. WM_RBUTTONDOWN 

     

     16. 在Windows编程中,标准鼠标的按键数是(  C  )。 

    A. 1                     B. 2                              C. 3                              D. 4 

     

     17. Windows编程中,定时器消息是( B ) 

    A. WM_TIME            B. WM_TIMER         C. WM_ON_TIME    D. WM_COMMAND

     

    18. GDI环境中,窗口的坐标系是如何构成的?( D ) 

    A. 左上角为原点,x轴正方向为水平向右,y轴正方向为竖直朝上 

    B. 中间为原点,x轴正方向为水平向右,y轴正方向为竖直朝上 

    C. 左下角为原点,x轴正方向为水平向右,y轴正方向为竖直朝下 

    D. 左上角为原点,x轴正方向为水平向右,y轴正方向为竖直向下  

     

    19. 以下选项中,GDI不能支持的是:( B )  

    A. 位图                       B. Flash动画            C. 直线和曲线         D. 文字 

     

    20. 设备环境DC的全称为: ( B ) 

    A. Device Content   B. Device Contexts  C. Device Config       D. Device Conter

     

    21. InvalidateRect的作用是  ( B ) 

    A. 删除一个矩形 

    B. 使一个矩行区域变为无效,从而可以重绘

    C. 使一个矩形区域变为无效,从而释放部分GDI资源 

    D. 擦除一个矩形区域 

     

    22. "已知窗口为缺省状态,有如下代码: HDC hdc = GetDC( hWnd ); 

    HPEN hpen = CreatePen( 1, 1, RGB(255,0,0) ); SelectObject( hdc, hpen ); 

    Ellipse( hdc, 050, 50, 200, 200 ); 则这段代码的执行效果是( B )。"  

    A. 绘制1个黑色的椭圆形边框,无填充颜色 

    B. 绘制1个红色的椭圆形边框,无填充颜色 

    C. 绘制1个黑色的椭圆形,填充为黑色,无边框 

    D. 绘制1个红色的椭圆形,填充为红色,无边框  

     

    23. "已知有如下代码: HDC hDC = GetDC(hWnd); LineTo(hDC,100,100); 

    则这段代码的执行效果是( A )。"  

    A. 从窗口的左上角至坐标(100,100)绘制1条直线 

    B. 没有绘制任何图形 

    C. 从窗口的任意一点开始至坐标(100,100)绘制1条直线 

    D. 从鼠标在窗口的位置至坐标(100,100)绘制一条直线

     

    24. 以下函数中不受画刷影响的函数是:( C )  

    A. Rectangle             B. Ellipse                    C. LineTo                    D. Polygon 

     

     25. 如果要创建一个宋体字体,那么字体描述中哪个属性为“宋体”?( C ) 

    A. lfCharSet               B. lfQuality                 C. lfFaceName          D. lfStrikeOut 

     

    26. 在Windows编程约定中,位图句柄为( B )。  

    A. HGDI                      B. HBITMAP              C. HDC                        D. HPEN 

     

     27. 下面哪个步骤能实现透明贴图(模板位图为单色的1位位图)?( A )  

    A. 位图和背景像素作异或操作->使用模板位图作与操作->原位图与背景作异或操

    B. 使用模板位图作与操作->原位图与背景作异或操作->位图和背景像素作异或操作 

    C. 位图和背景像素作异或操作->原位图与背景作异或操作->使用模板位图作与操作 

    D. 位图与背景作异或操作->位图和背景像素作异或操作->使用模板位图作与操作  

     

    28. 在BitBlt函数中进行光栅化处理方式中,哪1个值说明是要进行或运算? ( D ) 

    A. SRCAND                B. SRCCOPY               C. SRCINVERT                    D. SRCPAINT 

     

     29. 关于用于透明贴图的透明色,下面说法正确的是( D )。  

    A. 一定为白色         B. 一定为黑色         C. 只能是绿色         D. 可以是任意颜色,但不透明部分不应该包含该颜色。

     

    30. 进程最常见和最理想的结束方式为:( A ) 

    A. 主线程的入口函数返回 

    B. 进程中的一个线程调用ExitProcess函数  

    C. 另一个进程中的线程调用TerminateProcess函数  

    D. 进程中的所有线程自行终止运行  

     

    31. 线程正常结束的方式是:( A )  

    A. 线程函数返回   

    B. 调用ExitThread函数  

    C. TerminateThread  

    D. 包含线程的进程终止运行 

     

    32. 两个没有任何安全措施的线程同时对一个数作自增(++)运算,以下说法正确的是:( D ) 

    A. 自增(++)是原子操作,不会出现错误 

    B. 自增(++)是原子操作,但是两个加法先后顺序未知 

    C. 自增(++)不是原子操作,最后结果是加2 

    D. 自增(++)不是原子操作,最后结果不一定是2 

     

    33. 以下选项中,能触发WaitForSingleObject返回的事件为?( A )

    A. 特定的内核对象变为已通知状态 

    B. 特定的内核对象变为未通知状态 

    C. 对象被锁定 

    D.对象解除锁定 

     

     34. 创建互斥体的函数为:( A  )  

    A. CreateMutex                B. OpenMutex                   C. CreateEvent                  D. CreateSemaphore  

     

    35. SetWaitableTimer的参数lPeriod如果为正值,单位是什么? ( C ) 

    A. 分钟(m)                 B. 秒(s)                       C. 毫秒(ms)               D. 纳秒(ns) 

     

     36. 定义动态链接库时,模块定义文件确定函数f的导出顺序,下列语法正确的是

    ( A )。 

    A. f @1                       B. f 1                            C. @f 1                       D. @1 f 

     

    37. 动态链接库文件的后缀名为( B )。  

    A. lib                            B. dll                            C. exe                          D. obj 

     

    38. 下列说法中,不属于动态链接库的显式链接的好处的是( C  )。  

    A. 程序可以随时加载动态链接库  

    B. 显式链接的动态链接库的函数地址发生变化时,程序不需要重新编译 

    C. 动态链接库如果出现错误,程序能够正常运行 

    D. 动态链接库的载入语句可以出现在程序的任意位置  

     

    39. 下列哪个缩写是微软提供的C++语言的帮助库?( B ) 

    A. MFC                       B. MSDN                    C. API                          D. SDK 

     

    40. 在MFC类库中,CWnd类的基类是( A )。 

    A. CObject                 B. HWND                   C. CWindow              D. CDialog 

     

     41. 下列关于MFC框架说法错误的是( D )。  

    A. MFC框架中,类按照层次结构组织起来 

    B. MFC中,系统API被封装在类中 

    C. MFC类库中包含了一些全局函数和变量 

    D. 所有的MFC框架中的类有1个共同的基类 

     

     42. 在下列的MFC类中,哪1个不是从CObject类派生的?( A )  

    A. CTime                    B. CWnd                     C. CView                    D. CDialog  

     

     43. 在MFC中,最顶层的窗口一定属于哪个类或其子类的实例?( B )  

    A. CMenu                   B. CWnd                     C. CView                    D. CDialog   

     

    44. 在MFC框架中,CButton类的基类是( A )。  

    A. CWnd                              B. CStatic          C. CButton                 D. CCheckBox  

     

    45. 在MFC编程中,如果要显示1个树型视图,那么适合选用的视图类是( B )。  

    A. CFormView           B. CTreeView   C. CRecordView       D. CListView  

     

    46. 在MFC类库中,代表整个窗口的设备上下文的类是( A )。  

    A. CWindowDC         B. CClientDC    C. CPaintDC              D. CMetaFileDC     

     

    47. 在MFC编程中,应用对象派生自类( A )。

    A. CWinApp               B. CTheApp      C. CMyApp                D. Capplication  

     

    48. 下列几个MFC类中,不属于应用和线程支持类的是(  C )。  

    A. CWinThread         B. CEvent          C. CWnd                              D. CMuteX 

     

    49. 关于文档-视图结构,以下说法错误的是( C )。  

    A. 文档代表后台的数据  

    B. 视图是窗口的显示  

    C. 单文档界面(SDI)只能有1个视图 

    D. 多文档界面(MDI)可以有多个视图  

     

    50. 在MFC程序中,头文件的后缀是( A )。 

    A. h                     B. hh                            C. c                              D. cpp 

     

    51. 在MFC程序中,类的函数的定义通常被放在类文件中,文件后缀为:( D ) 

    A. h                     B. hh                            C. c                              D. cpp 

     

     52. 在由MFC AppWizzard生成的MFC程序中,后缀名为sln的文件表示( C )。 

    A. 头文件         B. 类文件          C. 解决方案文件             D. 资源文件 

     

     53. 下列哪个函数不是由CWinApp提供的函数?( C ) 

    A. Run                B. InitInstance          C. OnPaint                 D. OnIdle 

     

    54. 在CWinApp类的关键函数中,负责消息循环的函数是( A )。 

    A. Run                B. InitInstance          C. OnPaint                 D. WndProc

     

    55. 在MFC编程中,资源的ID取值范围最小值为 ( B )。 

    A. 0           B. 1           C. 32                  D. 1024 

     

     56. 下列关于控件消息通知码的前缀说法错误的是( C )。 

    A. BN表示是按键消息  

    B. CB表示是组合框消息   

    C. LB表示是大型按钮消息  

    D. EN表示是编辑控件消息 

     

     57. 在MFC编程中,标准的窗口消息其前缀是( A )。 

    A. WM               B. NM                C. HM                D. EN 

     

    58. 关于MFC消息的产生,以下说法错误的是( A )。  

    A. 当鼠标在窗口缓慢移动时,会产生1个WM_MOVE消息  

    B. 当窗口被缩放后,会产生1个WM_SIZE消息 

    C. 鼠标单击控件,会产生1个控件通知消息  

    D. 程序启动时,也会产生MFC消息 

     

     59. MFC的消息机制中,最初的消息接收者是( A )。  

    A. 主框架窗口         B. 控件              C. 应用              D. 视图 

     

    60. 在MFC消息机制中,1个单文档视图应用程序的消息处理优先级顺序是( A )。 

    A. 视图、文档、主框架、应用程序  

    B. 文档、视图、主框架、应用程序  

    C. 应用程序、视图、文档、主框架  

    D. 主框架、视图、文档、应用程序

     

    61. 下列哪个宏用于处理用户自定义消息?( B ) 

    A. ON_COMMAND           B. ON_MESSAGE      C. ON_CONTROL  D. ON_NOTIFY 

     

     62. 下列关于Windows消息机制,说法正确的是( C )。 

    A. 具体的应用程序截获相应的消息,并进行处理  

    B. 窗口截获消息,并处理所有的消息   

    C. 窗口截获消息,按照消息类型进行传递,由具体的对象处理  

    D. 在Windows中,消息会传递到所有窗口  

     

    63. 下列哪个MFC中的宏与消息映射无关?( A )  

    A. DECLARE_DYNAMIC   

    B. ON_CONTROL   

    C. ON_COMMAND_RANGE  

    D. ON_UPDATE_COMMAND_UI_RANGE 

     

     64. 在MFC中,定义消息映射架构的基类是( D )。 

     A. CWnd                    B. CView                    C. CWinApp               D. CCmdTarget 

     

    65. 在MFC中,标准消息宏ON_CONTROL参数中不包括。( D )  

    A. 控件ID 

    B. 消息类型  

    C. 消息处理函数指针  

    D. 窗口句柄  

     

    66. 在菜单资源编辑界面中,选择菜单属性Separator为true,则该菜单项( A )。  

    A. 不能提供命令,只有1个分割线  

    B. 在命令行下方添加1个分割线  

    C. 在命令行上方添加1个分割线  

    D. 外观没有变化 

     

     67. 在菜单资源编辑界面中,要为菜单添加子菜单,需要设置的属性是( C )。  

    A. Separator    B. Grayed         C. Popup           D. Break 

     

    68. 在响应菜单的消息时,消息类型应该是( A )。  

    A. 命令(COMMAND)消息

    B. UPDATE_COMMAND_UI消息  

    C. WINDOWS消息  

    D. KEYDOWN消息 

     

     69. 下列关于菜单消息响应,说法正确的是( C  )。 

    A. 一旦两个消息被设置了范围映射,则原有的消息映射函数会失去作用  

    B. 两个消息被设置了范围映射,原有的消息映射函数仍然有作用  

    C. 在设置范围映射时,如果参数表中第1个消息ID值大于最后一个消息的值(不为0),则消息不能被响应  

    D. 在设置范围映射时,如果参数表中第1个消息ID值大于最后一个消息的值

    (不为0),则只能响应第1个消息 

     

    70. 要获取1个菜单的子菜单,应该选用的函数是( B )。  

    A. GetMenu              B. GetSubMenu        C. InsertMenu          D. AppendMenu 

     

    71. "已知如下程序片断:  

    void CMFCDemoView::OnRButtonUp(UINT nFlags,CPoint point) { 

    A. 1 ClientToScreen(point); 

    B. 2 CMenu menu; 

    C. 3 menu.LoadMenu(IDR_POPMENU); 

    D. 4 menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this); 

    则4条编号的语句中有错误的是:( A ) 

    A. 1           B. 2                     C. 3                     D. 4  

     

    73. 关于快捷键的设置,下列说法正确的是( C )。  

    A. 只要在菜单的资源编辑菜单中添加了“&P”的标识符,就可以在程序运行中使用Ctrl+P的组合按键来调用菜单  

    B. 两个快捷键不能同时对应1个消息函数  

    C. 如果1个快捷键同时对应两个消息ID,则只有前1个起作用,能够正常运行 

    D. 如果1个快捷键同时对应两个消息ID,程序将不能正常运行

     

    74. 关于工具栏,下列说法正确的是( B )。

    A. 工具栏中只能显示位图  

    B. 工具栏可以同时显示文字和位图  

    C. 工具栏中只能显示文字  

    D. 工具栏中的按钮可以显示文字,也可以显示位图,但不能同时显示 

     

    75. 在按钮的Prompt属性中添加“绘制椭圆\n椭圆”,则鼠标停留在此按钮上,

    窗口中显示为( D )。  

    A. 状态栏显示和鼠标提示都显示“绘制椭圆” 

    B. 状态栏显示和鼠标提示都显示“椭圆” 

    C. 状态栏显示“椭圆”,鼠标提示“绘制椭圆” 

    D. 状态栏显示“绘制椭圆”,鼠标提示“椭圆” 

     

    77. 则下列要设置“剪切”按钮的文字提示的语句正确的是( A )。 

    A. m_wndToolBar.SetButtonText(4,"剪切");   

    B. m_wndToolBar.SetButtonText(3,"剪切");   

    C. m_wndToolBar.SetButtonText(0,"剪切");   

    D. m_wndToolBar.SetButtonText(1,"剪切"); 

     

    78. 已知1个工具栏m_wndToolBar和1个Rebar:m_wndReBar,则要添加该工

    具栏到ReBar中的语句正确的是( A )。  

    A. m_wndReBar.AddBar(&m_wndToolBar);  

    B. m_wndReBar.AddBar(m_wndToolBar);  

    C. m_wndReBar.AddBar(1,&m_wndToolBar);  

    D. m_wndReBar.AddBar(0,&m_wndToolBar);   

     

    79. 关于对话栏,下列说法正确的是( B )。  

    A. 对话栏的消息响应函数被添加在该对话栏的类中  

    B. 对话栏的消息响应函数被添加在主框架中  

    C. 对话栏(DialogBar)和ReBar都是工具栏(ToolBar)的派生类  

    D. 对话栏不能任意停靠 

     

     80. 关于状态栏,下列说法正确的是( A )。 

     A. 使用AppWizzard创建MFC应用程序时,可以创建默认的状态栏  

    B. 状态栏中只能显示系统定义好的几种有限的信息  

    C. 状态栏中只能显示1种信息  

    D. 状态栏不是1种窗口

     

    81. 标识符ID_SEPARATOR的含义是( A )。 

    A. 没有任何字符串与这个状态栏单元关联  

    B. 该状态栏单元只显示1个分隔符  

    C. 该状态栏单元只显示数字  

    D. 该状态栏单元只显示字符串  

     

    82. 自定义状态栏中,改变状态栏文字的函数是( B )。  

    A. SetText                  B. SetPaneText         C. TextOut        D. sprintf  

     

    83. 自定义状态栏中,要获取状态栏的风格,使用的系统函数是( A )。 

     A. GetPaneInfo        B. GetPaneText        C. GetPane       D. CommandToIndex  

     

    84.   在对话框的编辑器中,表示控件左对齐的按钮是界面的第几个按钮(不计分隔栏)( A )。

     A. 2                    B. 3                              C. 6                   D. 7

     

    85.   在对话框的编辑器中,表示控件水平居中的按钮是界面的第几个按钮(不计分隔栏)( D )。 

    A. 4                     B. 5                              C. 6                              D. 7 

     

    86.   在对话框的编辑器中,最左边的按键的作用是( B )。  

    A. 激活对话框编辑功能  

    B. 测试对话框  

    C. 控件左对齐  

    D. 控件垂直居中 

     

      87. 在MFC类中,访问对话框的编辑框中的文本的函数是( C )。  

    A. GetText                 B. GetItem                C. GetDlgItemText  D. GetDlgText 

     

     88. MFC框架中,用AppWizzard生成对话框模板框架,调整控件的位置的方式可以是( C )。A. 只能在资源编辑器中编辑  

    B. 只能在对话框类中编辑代码 

    C. 既能在资源编辑器中,也能在对话框类中用MFC提供的函数修改  

    D. 使用应用程序对象进行编辑 

     

     89. MFC编程中,有模式对话框的创建函数是( B )。  

    A. Create          B. DoModal      C. CreateDialog  D. Initilize  

     

     90. 下列创建有模式对话框的流程,哪一项是正确的?( A )  

    A. 加载资源->CreateDlgIndirect->OnInitDialog->UpdateData     

    B. OnInitDialog->UpdateData->加载资源->CreateDlgIndirect     

    C. 加载资源-> UpdateData ->OnInitDialog-> CreateDlgIndirect  

    D. 加载资源-> OnInitDialog -> CreateDlgIndirect ->UpdateData

     

    91. 在Windows操作系统中,最常见的系统错误提示对话框属于( A )。  

    A. 有模式对话框  

    B. 无模式对话框  

    C. 通用对话框  

    D. 固定对话框 

     

    92. 关于对话框运行机制,下列说法错误的是( B )。  

    A. 对话框的初始化中,必须初始化父类对象  

    B. 在对话框的DoModal函数中,应该进行资源释放的操作  

    C. 有模式对话框中,直到对话框关闭后函数DoModal才返回  

    D. 对话框的OnInitDialog函数并没有消息映射体  

     

    93. 下列关于对话框中数据交换的说法正确的是( C )。  

    A. 只能交换基本数据类型,不能交换类类型的数据  

    B. 可以交换任何C++中合法的数据类型  

    C. 可以交换基本数据类型和一些特定的类类型的数据  

    D. 可以对所有的数据的大小范围进行限制

     

    94. 在MFC编程中,从对话框中取得数据的系统函数是( A )。

    A. DoDataExchange         B. InitDialog              C. Create                   D. DoModal 

     

     95. 下列哪1种功能没有被封装为通用对话框?( C )  

    A. 颜色选择              B. 字体选择    C. 时间选择    D. 打印设置 

     

     96. 关于颜色对话框,以下说法错误的是( C )。  

    A. 颜色对话框是模式对话框  

    B. 颜色对话框的DoModal函数能够返回1个选择的颜色值  

    C. 颜色对话框设定颜色后,程序需要调用窗口重绘消息来更新颜色  

    D. 颜色对话框可以自定义颜色 

     

     97. 在创建了颜色对话框后,调用设定的颜色需要使用函数( A )。 

    A. GetColor               B. OnColorOK            C. SetCurrentColor  D. etColor 

     

    98. 在MFC中,设置颜色值为(255,255,255)表示( B )。  

    A. 黑色              B. 白色              C. 红色              D. 蓝色 

     

     99. 关于文件对话框的系统函数,以下说法正确的是( D )。  

    A. 文件对话框可以得到1个文件的数据  

    B. 文件对话框可以得到1个文件指针(FILE*)  

    C. 文件对话框可以得到文件的句柄(后缀)  

    D. 文件对话框可以得到文件名的字符串(CString) 

     

     100. 如果要1个文件对话框只能显示文件夹中的bmp文件,则建立对话框时应该设

    置的参数是( B )。 

    A. lpszFileName       B. lpszFilter               C. lpszDefExt            D. dwFlags

     

    101. 关于文件对话框,以下说法正确的是( C )。 

    A. 文件对话框只能打开单个文件 

    B. 文件对话框可以设置默认的打开文件 

    C. 文件对话框可以限制访问的文件类型 

    D. 文件对话框是无模式对话框 

     

      102. 关于查找和替换对话框,以下说法正确的是( D )。  

    A. 查找对话框是有模式的,替换对话框是无模式的  

    B. 查找对话框是无模式的,替换对话框是有模式的  

    C. 查找和替换对话框都是有模式的  

    D. 查找和替换对话框都是无模式的 

     

     103. 关于查找和替换对话框,以下说法错误的是( B )。  

    A. 查找和替换对话框可以使用同1个类来创建  

    B. 查找和替换对话框需要使用不同的类来创建  

    C. 查找对话框的bFindDialogOnly参数值为TRUE  

    D. 替换对话框的bFindDialogOnly参数值为FALSE 

     

    104. 关于字体对话框,说法错误的是( A )。  

    A. 使用字体对话框,能够返回1个指定的字体对象  

    B. 字体对话框可以调整字体的大小 

    C. 字体对话框可以调整字体的颜色  105. 

    D. 字体对话框可以返回1个字体属性 A 

     

     106. 在字体对话框函数中,获取字体大小的函数是( A )。  

    A. GetSize                  B. GetFaceName     C. GetColor      D. GetCurrentFont 

     

     107. 在MFC编程中,打印机硬件属于以下哪个类?( B )  

    A. CWnd                     B. CDC               C. CDialog                  D. CButton  

     

     108. 在MFC的打印对话框类中,函数GetToPage的作用是( C )。  

    A. 获取打印的文档 

    B. 获取打印范围的起始页

    C. 获取打印范围的结束页  

    D. 获取打印机 

     

      109. 关于打印和打印设置对话框,以下说法错误的是( B )。  

    A. 打印和打印设置对话框都属于CPrintDialog类  

    B. 打印设置对话框是无模式对话框  

    C. 打印对话框是模式对话框  

    D. 在MFC中,可以直接打印位图文件 

     

    110. 关于消息框,以下说法错误的是( C )。  

    A. 消息框的按钮必须使用系统按钮  

    B. 消息框不需要定义资源  

    C. 消息框在所有的操作系统下显示是一致的  

    D. 系统函数MessageBox可以直接生成消息框  

     

     111. 生成1个只具有确定和取消按钮的消息框,其参数为( C )。  

    A. MB_OK                  B. MB_YESNO           C. MB_OKCANCEL   D. MB_RETRYCANCEL

     

    112. 关于消息框的调用函数,以下说法正确的是( C )。  

    A. 全局函数MessageBox是MFC中的函数 

    B. 函数AfxMessageBox函数是Win32 SDK中的API  

    C. 全局函数MessageBox可以在所有的MFC程序中被调用  

    D. 函数AfxMessageBox和MessageBox是两个不同的消息框,是不同的实现  

     

    113. 在窗口中添加一个仅仅用于显示文字提示的控件,这个控件的类为:( A ) 

    A. CStatic                   B. CButton                 C. CEdit             D. CComboBox  

     

     114. 在MFC编程中,所有基于窗口的控件类的基类是( A )。  

    A. CWnd                              B. CView                    C. CWindows   D. CFrame  

     

     115. 窗口成为活动窗口的消息是( A ) 

     A. WM_ACTIVATE            B.WM_COMMAND                    C. WM_ENABLE       D. WM_ENTERIDLE 

      

    116. 下列哪个类不属于标准控件类?( D )  

    A. CTabCtrl                B. CEdit             C. CListCtrl                D. CTime   

     

    117. 在MFC编程中,可编辑文本框的控件类是( A )。  

    A. CEdit             B. CButton       C. CStatic          D. CComboBox  

     

    118. "已知以下语句: 

    GetDlgItem(IDC_CONVERT)->EnableWindow(FALSE); 则下列说法正确的是( A )。"  

    A. 该语句禁用了对话框中ID号为IDC_CONVERT的控件  

    B. 该语句将显示ID号为IDC_CONVERT的对话框  

    C. 该语句使ID号为IDC_CONVERT的控件变为可见  

    D. 该语句使ID号为IDC_CONVERT的的控件友灰色变为可用

     

    119. MFC的资源编辑界面,如果1个单选按钮的Group属性被设置为“TRUE”,则说明( A )。 

    A. 该单选按钮是1组单选按钮的第1个 

    B. 该单选按钮独自作为1个按钮组 

    C. 该单选按钮的消息响应属于1个组框 

    D. 该单选按钮一定是默认的单选按钮 

     

     120. 要设置某个单选按钮的状态,使用的函数是( B )。  

    A. SetButton             B. SetCheck               C. SetRadio                 D. SetGroup 

     

     121. 下列哪项是在静态控件中显示位图的控件风格?( A )  

    A. SS_BITMAP           B. IDB_BITMAP        C. WS_BITMAP         D. CB_BITMAP  

     

    122. 下列关于静态控件的说法正确的是( D )。  

    A. 静态控件在程序运行过程中不能被更改

    B. 静态控件不能接受用户交互  

    C. 静态控件只能显示文本  

    D. 默认情况下,所有的静态控件的ID都是相同的 

     

     123. 在编辑控件(CEdit)中设置属性Number为“TRUE”,则( A )。  

    A. 编辑控件只接受数字的输入  

    B. 编辑控件只能接受数字和文本的输入  

    C. 编辑控件接受的文字数量受到限制  

    D. 编辑控件只能接受英文字母输入 

     

     124. 关于编辑控件,下列说法正确的是( D )。  

    A. 编辑控件中的文本缺省状态下能够自动换行  

    B. 编辑控件中的文本默认为多行显示  

    C. 编辑控件不能响应鼠标点击的操作  

    D. 编辑控件能够被设定为自动转换大小写  

     

    125. "对于1个编辑控件,定义1个控制变量m_edit,添加如下语句: m_edit.SetLimitText(1); 

    并将该编辑控件的Password属性设为TRUE,则当运行程序时,用户输入数据“123”,能够在编辑控件中显示( D )。"  

    A. 123                B. 1                              C. ***                D. *  

     

    126. 下列函数中,哪1个函数不能对多行文本中的部分内容进行操作?( A )  

    A. GetWindowText           B. GetLine                  C. SetLine                   D. GetSel  

     

    127. 关于列表框(List Box)控件,以下说法错误的是( D )。  

    A. 列表框控件可以列出一系列供用户从中选择的项  

    B. 列表框控件中的选项可以使用字符串 

    C. 列表框控件中的选项可以使用滚动条 

    D. 列表框中只能一次选择1个选项 

     

    128. 要在列表框中添加字符串,可以使用的系统函数是( A )。  

    A. AddString              B. AddText                 C. SelectString          D. SetSel

     

    129. 关于组合框的大小调整,以下说法中错误的是( D )。  

    A. 组合框的列表框可以改变其高度  

    B. 组合框的编辑框或静态文本框可以改变其宽度  

    C. 组合框的列表框和编辑框需要在编辑器中分别调整大小 

    D. 组合框的列表框和编辑框的宽度可以不一致 

     

     130. 在编辑框中输入列表框中的某一项的首字母,可以快速切换到该选项,要想实

    现该功能,必须设置组合框的类型(Type)属性值为( C )。  

    A. Sort               B. Drop List      C. Dropdown   D. Simple  

     

    131. 定义1个组合框消息ON_CBN_DBCLICK,则要响应该消息的组合框的Type属性值必须为( D )。 

    A. Sort               B. Drop List      C. Dropdown   D. Simple 

     

    132. 在实际应用中,如果想要1个列表视图控件可以显示1张3×3数据表中的全部数据,则应该选用的列表视图控件风格是( D )。  

    A. 图标(Icon)

    B. 小图标(Small Icon)  

    C. 列表(List)  

    D. 报告(Report) 

     

     133. 以下不是树型列表视图支持的特性是:( C )  

    A. CheckBox 

    B. 节点连线 

    C. 下拉列表 

    D. 展开按钮 

     

    134. 建立一个名为"Test"的项目,这个项目中,管理整个程序初始化、运行和结束

    的类是:( B ) 

    A. CMainFrame        B. CTestApp              C. CTestDoc              D. CTestView  

     

    135. CDocTemplate类中不包含的成员变量有:( D ) 

    A. m_pDocClass       B. m_pFrameClass  C. m_pViewClass     D. m_pAppClass 

     

    136. 文件类中,实现串行化的函数是:( A ) 

    A. Serialize                B. <<                  C. OnSave                  D. DoDataExchange  

     

     137. 以下各类中,包含一个链表,用于保存应用数据的类是:( A )  

    A. 文档类                  B. 视图类         C. 应用程序类         D. 框架窗口类 

     

     138. 视图类中在屏幕上绘制图形的函数为:( B )  

    A. OnPrint                  B. OnDraw                 C. OnPaint                 D. OnUpdate

    更多相关内容
  • 近日,微软正式公开了新版Windows 10的“开始菜单”效果图。从目前来看,新版本无论是风格还是图标都会比当前版本要简洁干练,也比较趋近于之前亮相的Windows 10X。从久远的Windows Chicago,到最新的 Windows 10,...

    近日,微软正式公开了新版Windows 10的“开始菜单”效果图。从目前来看,新版本无论是风格还是图标都会比当前版本要简洁干练,也比较趋近于之前亮相的Windows 10X。从久远的Windows Chicago,到最新的 Windows 10,在不知不觉间,“开始菜单”已经陪伴我们走过了20多年的岁月,作为Windows上最为重要的特性之一,“开始菜单”的每一次调整与改变都会引发一番激烈的争论。而我们也以此为契机,回顾该特性的数次历史瞬间,盘点“开始菜单”这一路的演变历程。

    b4c901a3cc9bce1c3b998c5ba3dac3d3.png

    Windows Chicago

    44d6e022e4f8c3c0d4b0c78d16fad858.png

    故事的一切都要从Windows Chicago讲起,该系统可以被视为Windows 95的开发者预览版。在Windows Chicago build 58s这个版本中,“开始菜单”的雏形就已经出现。最初的“开始菜单”有三个核心功能,分别是用户与帮助中心、搜索以及文件管理器。此外,新安装的第三方应用也会出现在开始菜单里面。总的来说,Windows Chicago上的“开始菜单”还不太完善,但至少意味着微软开始提供一个便捷的打开程序方式。

    Windows 95/NT 4.0

    c57ff46c3a233e3caa99be2be52ce833.png

    无论是现在还是过去,使用开发预览的操作系统都是一件存在门槛的事情,以至于不少人对于“开始菜单”的第一次认识都是在Windows 95操作系统上。甚至连微软自己也更倾向以Windows 95为起点介绍“开始菜单”,而这关乎到“开始菜单”这一命名的含义。

    在比尔·盖茨的未来愿景里,微软应该致力于帮助每个家庭的每一张桌子上都有一台计算机,而Windows 95的出现可谓是大大加速了这一进程。对于大多数人而言,它是现代化窗口式操作系统的先驱(尽管施乐和Apple对此持有异议),这也恰好暗合了“开始菜单”命名的含义——一切从这里开始。

    回到“开始菜单”菜单本身。尽管时过境迁,Windows 95上的“开始菜单”就算在今天看来并不过时:它是系统中最主要的应用启动器,并且还可以方便地查看最近打开的文件、系统设置以及文件搜索。

    此外,Windows 95也为日后的“开始菜单”奠定了操作逻辑:所有安装的应用程序都会被放置在“程序”部分,而该部分又只是“开始菜单”中的一个分支,如果觉得不够显眼,你也可以将程序拖动出来,并将它们“固定”在“开始菜单”的顶部………总的来说,微软在Windows 95的“开始菜单”引入了树状结构的排列逻辑。而时至今日,我们也依旧能够在最新的Windows 10窥探到一逻辑。

    Windows NT是Windows中比较具有商业属性的版本,而1996年发布的Windows NT 4.0则是在Windows 95的基础上做了一些小的修订。该版本系统的“开始菜单”与Windows 95上的基本一致,但在默认设置下,“程序” 部分又被拆分成了 “当前用户安装的应用” 和 “所有用户安装的应用” 两个部分,只是这一设计在之后的Windows版本中被取消了。

    Windows 98

    6286cafeb43255c8cc0b5b5620005e66.png

    为了顺应日渐风靡的互联网大潮,微软在Windows 98的系统层面做了很多与网络有关的整合,“开始菜单”自然也不例外。Windows 98默认在“开始菜单”中整合Windows Update选项卡,并添加了“收藏” 文件夹,用户可以直接将相应的网站链接保存到此处,方便日常使用。

    除了针对互联网进行一定的优化,Windows 98上的“开始菜单”也做了一些其他的改变。因为Windows 98 支持多用户登陆的特性,微软在“开始菜单”的底部添加了“登出” 按钮,只是用户需要闭Windows中的所有窗口和应用程序才能执行此操作,稍显不便。此外,从Windows 98开始,用户可以在“开始菜单”中进行右键单击操作,以执行更多的选项。

    微软还在1999年发布了一个Windows 98 SE,该系统是Windows 98的付费升级版本。Windows 98 SE在“开始菜单”上并没有多少改变,主要是在右键单击时增加了 “按名称排列”的选项,让用户可以更加便捷地整理“开始菜单”。

    Windows ME/2000

    985de87592fe4c347bba500c0cf656b8.png

    微软在2000年推出了Windows 2000以及Windows ME操作系统,Windows 2000是32位系统,在功能上针对Windows 98和Windows NT 4.0做了一些优化;而Windows ME则是Windows 2000的弱化版本,属于32位16位混编系统,对于硬件配置的要求也更低。尽管如此,Windows 2000和Windows ME在“开始菜单”上却并没有什么升级的点,无论是功能还是选项都和前代相差无几,唯一的不同就是Windows 2000在默认设置下取消了“登出” 按钮。

    Windows XP

    47a4107c6fb9346f55cbd377098fe5ff.png

    Windows有许多经典的版本,但要说哪个版本最经典,Windows XP一定是当仁不让的那一个。Windows XP可以说是微软历史上寿命最长的操作系统了,从 2001年10 月份正式发布到2014年4月8日终止支持,该系统见证了无数历史的瞬间,也横跨PC和智能手机两个时代。而截至到今年4月,全球仍有1.32%的PC在使用Windows XP系统,也是其巨大魅力的真实体现。

    回到了“开始菜单”本身,其实Windows XP并没有在“开始菜单”上引入更多的功能与特性,只是让其可以在界面内容纳更多的功能。在XP上,“开始菜单”从原来的一列变成了两列,将应用启动器、设置等固有的功能放置在左侧,并在右侧增加了一栏,用户可以在这里查看最近的应用,并根据自身的喜好固定一些程序。

    Windows Vista

    1f01a28427554243403bbaf2620d4af8.png

    Windows Vista应该算得上是目前为止最具争议的Windows版本了。这次,微软在“开始菜单”上整合了全局搜索功能,这极大便捷了用户操作的易用性。用户不必再像过去一般在拥挤的分支程序菜单中寻找需要的程序。同时,得益于这一功能的出现,用户可以更方便的使用“开始菜单”来排列文件和程序,就像现实中的文件柜一样。

    从Windows Vista开始,微软也对“开始”这一按钮进行了颠覆性的设计。过去的“开始”按钮无论怎么变,核心都是视窗图标+Start字样。而Windows Vista去掉了Start字样,仅仅保留视窗图标。在微软看来,“开始菜单”按钮经过了11年的发展,已经成为一种约定俗称的东西,以至于人们无需知道它的名字就知道它在哪里,以及它的功能是什么。

    尽管想法非常前卫,微软还是考虑到了部分群体的接受程度,用户依旧可以在设置中将“开始菜单”设置为经典样式(在XP中就可以了)。而在经典样式下,“开始菜单”甚至可以提供一些上古时代的功能。

    Windows 7

    df6b6441be292b86dac91f10e59fa38c.png

    与前代并没有太大的不同,Windows 7的“开始菜单”基本上延续了Vista上的设计,主要是缓冲了一下 Windows Vista 上过于突兀的改变,更加容易让用户接受。相比较下,“开始菜单”的好邻居——任务栏有了比较大辐的调整,微软将快速启动栏与传统的Windows任务栏相结合,并用图标式单应用任务按钮代替了过去的文本式单应用任务按钮。

    Windows 8/8.1

    18d141d3ad51e0fae4428e3480b77dd2.png

    Windows 8就是典型的步子大了扯着蛋。微软为了所谓的拥抱触摸屏,在该系统上拿掉了已有20年历史的“开始菜单”然后,用一个“开始屏幕”取代了它。想法其实没有错,可用户不喜欢,口碑和普及率自然也好不到哪里去。

    其实这并不是 “开始屏幕”本身的问题,动态瓷贴的理念足够先进,可以帮助用户在有限的时间与屏幕尺寸中接收到尽可能多的信息。主要是它与以往的开始菜单有着过于巨大的鸿沟,而传统桌面与Metro(后因为侵权改名为Modern)界面切换时的逻辑也不够清晰连贯,在使用体验上存在割裂。这一切都要归咎于微软没有做好用户教育的工作。

    面对用户海量的批评,微软也拿出了Windows 8.1作为回应。微软在8.1中重新引回了“开始”按钮,右键单击该按钮也可以找到比较多的功能,只是使用起来不太直观。可惜的是,尽管“开始”按钮被重新引入,但“开始菜单”却并没有在8.1系统上回归。

    Windows 10

    0f2e49247efd084810e956ea4551861e.png

    Windows 10上最让人欣喜的是“开始菜单”的回归,它整合了Windows 8上配色丰富、尺寸多变的瓷贴设计,以及 Windows 7上逻辑清晰的菜单排列。新的“开始菜单”重新启用了两栏的排布方式,左边为常用应用列表和常用功能,分为上下两部分,也就是把Win7的左右两部分精简后放在一起,右边为Win8/Win8.1的磁贴元素,方便进入常用应用,整体上看起来更加宽阔。

    作为“最后一个”Windows版本,微软也在不断的更新升级中对“开始菜单”进行了调整。从2018年开始,“开始菜单”由过去的两栏设计改为三栏,对排布层次做了进一步划分。而Fluent Design风格图标的引入,加上一贯凌乱的配色,也让本就不算特别协调的UI设计看起来更为诡异。

    根据最新官方公布的相关图片,或许下一个版本的Windows 10可以解决这一问题。微软正计划将所有动态磁贴的底色都进行统一,而应用列表更是直接取消底色设计,这些都更能凸显Fluent Design风格的图标,让整体系统颜值更上一层。

    8cf8a8dfbe57075132ef7b1ca0824c74.png

    结尾:未来路在何方?

    “开始菜单”缘何经典?是因为它在特定的发展阶段暗合了用户习惯与历史趋势。凭借对“历史趋势”的判断,微软对“开始菜单”做了颠覆式的改革,但面对用户固有的使用习惯又不得不做出妥协。然而,无论微软是进还是退、是颠覆还是妥协,历史的车轮都不会停止前进。作为一项已有20多年历史的设计,“开始菜单”还会发生什么样的变化?又能否应对未来的机遇与挑战?或许在不久远的Windows 10X上,微软会告诉我们答案。

    举报/反馈

    展开全文
  • 编码约定 变更日志 依存关系 作者和许可 它有什么作用? xshmenu是Linux X Window桌面的动态启动器菜单: 列出了给定路径中的Shell脚本文件,并在选择后运行。 列出了给定路径的同级目录,以便快速遍历。 xshmenu...
  • C#程序设计语言课程内容 Windows 窗体 学习完本节后你将能够 描述Windows窗体 创建Windows窗体 创建窗体的主菜单 学习完本节后你将能够 创建主菜单 添加菜单项 处理菜单项事件 使用窗体的主菜单菜单的概念 主菜单...
  • 第二章 Windows 操作系统及其应用知识 要点 理论部分 总体操作部分以熟练操作为基础如果熟练掌握操作理论也就比较简单 桌面图标外观任务栏开始菜单 窗口类型应用程序文档文件夹对话框四种 组成标题栏菜单栏四按钮...
  • SplitView,一个新控件,具有启用简单菜单导航的功能 x:Bind,XAML应用程序的新绑定技术 资产演示 该项目包括以下内容: 资产规模使用x.scale-100.png命名约定 沙盒演示 **先决条件**此演示需要Windows 10 SDK预览...
  • 精通Windows.API-函数、接口、编程实例.pdf

    千次下载 热门讨论 2013-01-27 11:49:55
    2.1.3 Windows数据类型与Windows API 14 2.1.4 Windows中的数据结构 15 2.2 Windows API的功能分类 15 2.2.1 系统基本服务 15 2.2.2 系统管理 17 2.2.3 用户界面 17 2.2.4 图像和多媒体 20 2.2.5 ...
  • Windows应用程序基础(详细,简单易懂)

    千次阅读 多人点赞 2022-04-05 16:47:53
    Windows程序的执行过程是:程序入口、定义窗口类、注册窗口类、创建窗口、更新窗口、显示窗口、消息循环、窗口消息处理、程序执行实体结束。接下来我会逐一给大家详细讲讲。


    一.前言

    1. 大家好!这是我的第一篇博客,首先来个自我介绍吧!我是来自一所双非院校的大一新生,所学的专业是计算机科学与技术,纯纯小白一枚。
    2. 那我为什么要写博客呢?为什么?说实话,我一开始一直都没有写博客的想法,我都是看别人的博客,直到有一天,我的好同学李同学来向我推销他的博客,我那时就很惊讶,哇,你大一就会写博客了,这么厉害。他就跟我说:“你也可以的,就当做笔记吧。”(他的ID是:qq_64484137,也是一个大一新生博主,很厉害的,大家快去关注他一波!冲冲冲!)之后我也想了想,写博客也有很大的好处,你可以在写博客的过程中不断巩固自己的知识,提高自己的能力,是一种很好的学习方法,还有一点就是我这个人嘛稍微有一点点内敛,所以我也想通过写博客来改变自己,想成为一个比较阳光开朗的人(哈哈哈,说出来我都有点不好意思)。于是,我便有了写博客的想法。
    3. 就在不久,我们老师刚刚教完Windows应用程序基础,说实话,我听的也不是很懂,但我通过最近的学习和实践,基本上懂了(不敢说精通)。所以接下来,我来跟大家讲讲Windows应用程序的相关基础知识(绝对简单易懂),系好安全带,我们出发啦!

    在这里插入图片描述
    (本次使用的编译器为Microsoft Visual C++ 2010 Express,创建项目:新建项目->Win32项目->勾选空项目以及Windows应用程序->完成)


    二.Windows编程基础知识

    在这里插入图片描述

    (1)窗口

    窗口是Windows本身及其应用程序的基本界面单位,是应用程序生成的显示在屏幕上的一个矩形区域,是应用程序与用户间的直接接口;应用程序控制与窗口有关的一切内容,包括窗口的大小、风格、位置及窗口内显示的内容等。

    Windows编程说白了,就是编一个窗口,使这个窗口具有显示和人机互动等功能。你现在看到的页面就是一个窗口,这个窗口显示了我写给你们的内容(显示功能),你们也可以对我的内容进行复制和粘贴等一系列操作(人机互动功能)。


    (2)事件驱动

    Windows采用事件驱动方式,即程序的流程不是由代码编写的顺序来控制的,而是由事件的发生来控制的,所有的事件是无序的,因此Windows应用程序是密切围绕信息的产生与处理而展开的,主要任务就是对接收事件发出的信息进行排序和处理。程序的执行过程就是选择事件和处理事件的过程,而当没有如何事件触发时,程序会因为查询事件队列失败而进入睡眠状态,从而释放CPU。

    事件驱动怎么理解呢?事件,驱动。是不是有事件才会驱动,没事件就不会驱动?没错,就是这个道理,当有事件发生时,系统会把这些事件收集起来,然后发送给处理器,经过处理器的处理后,最后做出与事件相对应的响应。是不是很好理解呀。


    (3)句柄

    句柄(Handle)是整个Windows编程的基础。一个句柄是指使用的唯一的整数值,即以一个字节(程序中64位为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,如一个窗口、按钮、滚动条、输出设备或文件等。应用程序能够通过句柄访问对应的对象的信息。

    句柄是很重要的。但是大家是不是对句柄这东西感觉好难理解。句柄?什么东西啊!说实话,当我听老师讲句柄的时候,我也是一头雾水。后来我去网上查资料的时候发现了一个很好的解释,句柄它就是一个ID,一个标识符。怎么用呢?很简单。大家都知道C++怎么定义一个整型变量吧。

    	int x;//定义一个整形变量
    

    接下来我们定义一个窗口句柄。

    	HWND hwnd;//定义一个窗口句柄
    

    大家发现了没,它们定义的方式一模一样,如果你想定义一个整形数据那就用int,如果你想定义一个窗口句柄那就用HWND。这样对比的话,大家应该容易来理解吧。(句柄这个翻译有点害人啊)

    句柄类型说明
    HWND窗口句柄
    HINSTANCE程序实例句柄
    HCURSOR鼠标句柄
    HFONT字体句柄
    HIPEN画笔句柄
    HBRUSH画刷句柄
    BIDC图形设备环境句柄
    HBITMAP位图句柄
    HICON图标句柄
    HMENU菜单句柄
    HFILE文件句柄

    三.Windows中的事件驱动程序设计

    1. 终于来到我们的重头戏了,前面的都是概念理论,会比较难理解,所以接下来我们将通过实践来看看这些概念理论是如何应用的。(一定要动手哦,这样才会提高的)
    2. Windows程序的执行过程是:程序入口、定义窗口类、注册窗口类、创建窗口、更新窗口、显示窗口、消息循环、窗口消息处理、程序执行实体结束。接下来我会逐一给大家详细讲讲。

    (1)程序入口函数

    在C/C++语言程序中,其中入口函数都是函数main()。但是在Windows程序中,在这个入口函数由WinMain()来代替,其原型为:

    	int WINAPI WinMain(HINSTANCE hInstance,//操作系统使用此值来标识 EXE (加载到) 可执行文件。 某些函数需要实例句柄Windows例如,加载图标或位图。
    					   HINSTANCE hPrevInstance, //没有意义。 它用于 16 位Windows,但现在始终为零。
    					   LPSTR     lpCmdLine,//用于指定程序的命令行,是指向字符串的指针类型。
    					   int       nCmdShow//是一个标志,指示主应用程序窗口是最小化、最大化还是正常显示。
    					   )
    
    1. WINAPI 是调用约定,调用约定定义函数如何从调用方接收参数。 例如,它定义参数在堆栈上的显示顺序。
    2. 函数返回 int 值,返回值不由操作系统使用,但可以使用返回值将状态代码传达给你编写的其他程序。

    说实话,我们有时候学东西的时候要有分寸,什么叫做要有分寸?就是你要知道哪些东西你值得去深入学习,哪些东西不必要过于深究。就拿上面的入口函数里的参数来讲,你没必要去真正的搞懂它为什么会这么用,就算你真正的搞懂了用处也不大,而且还费时间。所以,只要知道它的一些意义就行了。

    所以,对于入口函数,我们只要知道它是这么定义的就好了。


    (2)定义窗口类

    创建好程序入口函数后,接下来我们来看看如何定义一个窗口。定义窗口,就是定义窗口的基本属性,如窗口边框、窗口标题栏文字、窗口大小和位置、鼠标、背景色、处理窗口消息函数的名称等。
    窗口类定义通过给窗口类数据结构WNDCLASS赋值来完成,该数据结构中包含窗口类的各种属性。我们先来看看WNDCLASS的结构。

    typedef struct tagWNDCLASS 
    {
    	UINT style;				//窗口的风格
    	WNDPROC lpfnWndProc;	//指定窗口的消息处理函数的窗口过程函数
    	int cbClsExtra :		//指定分配给窗口类结构之后的额外字节数
    	int cbwndExtra;			//指定分配给窗口实例之后的额外字节数
    	INSTANCE hInstance :	//指定窗口过程所对应的实例句柄
    	HICON hIcon;			//指定窗口的图标
    	HCURSOR hCursor;		//指定窗口的鼠标指针
    	HBRUSH hbrBackground;	//指定窗口的背景画刷
    	LPCTSTR lpszMenuName;	//窗口的菜单资源名称
    	LPCTSTR lpszClassName;	//该窗口类的名称
    }WNDCLASS, * PWNDCLASS;
    

    以上就是WNDCLASS的结构体,在实际操作中,我不需要把这些代码打出来,因为编译器已经把它隐含定义了,我们只需要调用并且对它们赋值就行了。

     	WNDCLASS wcex;							//定义一个窗口wcex
        wcex.style = CS_HREDRAW | CS_VREDRAW;
        wcex.lpfnWndProc = WndProc;
        wcex.cbClsExtra = 0;
        wcex.cbWndExtra = 0;
        wcex.hInstance = hInstance;
        wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION);
        wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
        wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
        wcex.lpszMenuName = NULL;
        wcex.lpszClassName = szWindowClass;
    

    有一些属性成员有不同的值可以赋,不同的值不同的效果,我直接把定义窗口的总链接给大家,我就不在这里赘述了。
    链接:详细内容.


    (3)注册窗口类

    虽然我们定义了一个窗口,但是系统并不知道这个窗口的存在,所以接下来我们通过RegisterClass()函数来注册窗口类。

    	RegisterClass(&wcex);
    

    注册窗口类这一步很简单。


    (4)创建窗口类

    在注册窗口后,并没有生成一个窗口实体,我们可以用函数CreateWindows()来创建窗口,其代码为:

    	HWND WINAPI CreateWindow(	//返回值是窗口句柄
    	LPCTSTR lpClassName,		//窗口类名,要与注册时指定的名称相同
    	LPCTSTR lpWindowName,		//窗口标题
    	DWORD dwStyle,				//窗口样式
    	int X,						//窗口最初的x位置
    	int y,						//窗口最初的y位置
    	int nWidth,					//窗口最初的x大小
    	int nHeight,				//窗口最初的y大小
    	HWND hWndParent,			//父窗口句柄
    	HMENU hMenu,				//窗口菜单句柄
    	HINSTANCE hInstance,		//应用程序实例句柄
    	LPVOID lpParam				//指向一个传递给窗口的参数值的指针,以便后续在程序中加以引用
    	);
    

    其具体创建实例的代码为

    	hwnd=CreateWindow ( "HelloWin",
    						"我的窗口",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						480,
    						320,
    						NULL,
    						NULL,
    						hInstance,
    						NULL;
    

    创建窗口时,我们只需要按照参数的位置给其逐一赋值即可,如果想知道详细内容可以点击下方链接了解。
    链接:详细内容


    (5)显示窗口

    在创建窗口后,可以使用函数ShowWindows()显示窗口,其代码为

    	BOOL ShowWindow(HWND hwnd,int nCmdShow);
    

    其中,参数 hWnd 指定要显示的窗口的句柄,nCmdShow 表示窗口的显示方式,可以指定为从函数 WinMain()的nCmdshow 所传递而来的值。
    由于函数 Show Window()的执行优先级不高,所以当系统正忙着执行其他任务时,不会立即显示窗口,此时,调用函数 Update Window()立即显示窗口,其代码为

    	UpdateWindow (HWND hwnd);
    

    同时,函数UpdateWindow()还会给窗口过程发出 WM_ PAINT 消息使窗口客户区重绘。


    (6)消息循环

    Windows 操作系统是基于消息控制机制进行工作的,系统生成应用程序的消息队列,并将产生的消息放人其中,各应用程序不断地从消息队列中提取消息,并将其传递给窗口函数以进行相应的处理。函数GetMessage()就是用于从应用程序的消息队列中按照先进先出的原则将消息一个个地取出来,并放入一个MSG结构中。

    我们先来看GetMessage()函数的结构:

    	BOOL GetMessage(
    					LPMSG lpMsg,			//指向一个MSG结构的指针,用于保存信息
    					HWND  hWnd,				//指定获取具体窗口的消息
    					UINT  wMsgFilterMin,	//指定获取主消息值的最小值
    					UINT  wMsgFilterMax		//指定获取主消息值的最大值
    					);
    

    LPMSG lpMsg是用来存储信息的,接收来的信息都存储在lpMsg指针里。函数GetMessage()可以过滤消息,比如定义HWND hWnd,系统就只能接收来自hWnd窗口的消息,如果该参数为NULL(意思为空,就是什么都没有),这时函数GetMessage()从该来自该应用程序线程的所有窗口的消息队列中获取消息。wMsgFilterMin和wMsgFilterMax的作用是过滤,函数GetMessage()只能接收wMsgFilterMin和wMsgFilterMax之间的消息。如果wMsgFilterMin和wMsgFilterMax都为0,那么表示接收所有消息。

    我们来看看怎么写,应用程序通过while循环来获取消息,其代码为:

    	while (GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    

    函数TranslateMessage()的作用是将虚拟键消息转换为字符消息,以满足键盘输入的需要。

    函数DispatchMessage()的作用是将将消息分派到窗口过程。

    当且仅当函数GetMessage()在获取到消息WM_QUIT后,返回0值,于是程序退出消息循环。
    有关函数GetMessage()的详细内容大家可以通过链接了解了解:链接.


    (7)窗口函数

    应用程序获取到消息后就调用窗口函数进行相应处理,窗口函数定义了应用程序对接收的不同消息的响应及处理过程,其代码为:

    	LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    	{
    	    HDC hdc;
    	    PAINTSTRUCT ps;
    		RECT rect;
    		switch(message)
    		{
    			case WM_PAINT:
    				hdc=BeginPaint(hwnd,&ps);
    				GetClientRect(hwnd,&rect);
    				DrawText(hdc,TEXT("hello win"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
    				EndPaint(hwnd,&ps);
    				return 0;
    			case WM_DESTROY:
    				PostQuitMessage(0);
    				return 0;
    		}
    		return DefWindowproc(hwnd,message,wParam,lParam);
    	}
    
    1. CALLBACK WndProc()是在应用程序中定义的回调函数,用于处理发送到窗口的消息。接收的消息都会在这里进行处理,并作出对应的响应。

    2. HWND hwnd 表示的是接收消息的窗口的句柄,这个句柄值与函数 Create Window()返回的值相等,如果用同一个
      WNDCLASS 建立多个窗口,那么hwnd 标识特定的某个窗体。

    3. UINT message 为标识窗体的数值。

    4. WPARAM WParam 和 LPARAM IParam 都是 32 位消息的附加信息参数

    5. 程序本身通常自己不呼叫窗口消息处理程序,而由系统呼叫窗口消息处理函数,应用程序如果希望调用自身的窗口过程,那么可通过调用函SendMessage()来实现。

    6. 窗口函数使用 switch 和case 结构处理消息,开发者只需根据消息在 case 语句中编写相应的处理程序即可。

    7. 窗口消息处理程序在处理消息时,必须返回一个0值。

    8. 在 case 语句的消息处理程序段中,一般都有对消息 WM_DESTROY的处理,该消息是关闭窗口时发出的。一般情况下,应用程序调用函数PostQuitMessage()响应这条消息,其原型为:

     void PostQuitMessage (int nExitcode);//nExitcode为应用程序退出代码
    
    1. 函数 PosrQuicMessage()的作用是向应用程序发出 WM_ QUIT 消息,并请求退出系统。

    2. 窗口消息处理程序不予处理的所有消息应该被传递给名为DefWindowProc()的 Windows函数,而且从函数DefWindowProc()传回的值必须由窗口消息处理程序传回。

      以上内容大家有个基本的了解就行了

    由于我的水平有限,有些东西我不太懂,不好讲,也是怕误导(自己都不懂还讲,那就是害人了),所以我找了一些官方链接给你们,官方的链接是讲的很清楚的,大家可以去看看。
    关于WNDPROC() 回调函数:.
    关于DrawText()函数:这里.
    关于BeginPaint()函数:here.
    关于GetClientRect()函数:点这.
    关于EndPaint()函数:.
    关于PostQuitMessage()函数:.
    关于DefWindowproc()函数:这哦.
    在这里我随便把总链接(关于Windows应用程序的基本内容)给大家:总链接.


    四.实践

    讲了这么多,我来给大家实践一波吧。

    #include <windows.h>
    #include <tchar.h>
    static TCHAR szWindowClass[] = _T("DesktopApp");//主窗口类名。
    static TCHAR szTitle[] = _T("好好学习Windows应用程序!");//出现在应用程序标题栏中的字符串。
    int WINAPI WinMain(HINSTANCE hInstance,
    				   HINSTANCE hPrevInstance, 
    				   LPSTR     lpCmdLine,
    				   int       nCmdShow
    				   )
    {
    	LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);//要先声明一下
    	WNDCLASS wcex;							//定义一个窗口wcex
        wcex.style = CS_HREDRAW | CS_VREDRAW;
        wcex.lpfnWndProc =WndProc;
        wcex.cbClsExtra = 0;
        wcex.cbWndExtra = 0;
        wcex.hInstance = hInstance;
        wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION);
        wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
        wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
        wcex.lpszMenuName = NULL;
        wcex.lpszClassName = szWindowClass;
    	RegisterClass(&wcex);
    	HWND hwnd=CreateWindow(szWindowClass,
    						szTitle,
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						480,
    						320,
    						NULL,
    						NULL,
    						hInstance,
    						NULL
    						);
    	ShowWindow(hwnd,nCmdShow);
        UpdateWindow(hwnd);
    	MSG msg;
    	while (GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    }
    	LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    	{
    	    HDC hdc;
    	    PAINTSTRUCT ps;
    		RECT rect;
    		switch(message)
    		{
    			case WM_PAINT:
    				hdc=BeginPaint(hwnd,&ps);
    				GetClientRect(hwnd,&rect);
    				DrawText(hdc,TEXT("加油!相信你自己!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
    				EndPaint(hwnd,&ps);
    				return 0;
    			case WM_DESTROY:
    				PostQuitMessage(0);
    				return 0;
    		}
    		return DefWindowProc(hwnd, message, wParam, lParam);
    	}
    

    运行结果如下:
    在这里插入图片描述
    注意:你可能会发现,个别代码格式没有见过,是版本的问题,主要是关于SAL,大家可以通过链接了解一下, SAL


    五.结语

    哎。历时差不多一天半,终于写完了!写完的第一个感觉就是好累啊!!!如果你是认真看完的话,你会发现,越到后面,我写的情绪越来越低落了,没办法啊,上午上完体育课,一吃完饭就继续写都没有休息,好累,但是就算累我也要把这个写完,因为男人不能说不行!写完之后我也挺开心的,因为我做了一件我从来没有做过也从来没有想过会做的事,成就感还是有的。写博客还是很有意义的,不仅可以帮助我巩固和拓展我的知识,挺高我的能力,也可以帮助到大家,为大家解答疑惑。我的第一篇博客就要结束了,回想写作的过程经历了许多,有激动的时候,也有低落的时候,大家情绪低落的时候可以多运动运动或者听听歌(我给大家推荐一首歌《春娇与志明》,挺好听的),结束了。结束了?不可能的,我会继续努力,这对我来说这是一个新的起点,我要学会改变自己,以新的自己去面对未来,过去的我可能会有点不好,但我相信如果我够努力努力提升自己我可以达到我心里的那个目标。还有,我会根据我们上课的进度来更新。所以,可不可以点个赞,关注一下我呀,也可以在评论区留下你的足迹,有了你们的支持,我才会走的更远!如果有什么问题,欢迎大家提问!最后,感谢大家谢谢我们后会有期!


    (声明一下:本人是大一新生,第一次写博客,难免会出现错误,如果大家发现错误,请及时告诉我,我会及时更正,谢谢大家!)

    展开全文
  • 区别:(1)Linux速度比较快,安全性比windows好(2)有很多软件只能在windows里运行,与Linux兼容的软件正在开发中.(3)Linux适用在网络方面.(4)Linux的操作比较复杂,windows的比较简单. Linux和Windows的区别和Linux ...

    区别:
    (1)Linux速度比较快,安全性比windows好 
    (2)有很多软件只能在windows里运行 ,与Linux兼容的软件正在开发中. 
    (3)Linux适用在网络方面. 
    (4)Linux的操作比较复杂,windows的比较简单. 

     

    Linux和Windows的区别 和Linux 一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口 、网络和安全性。

    但是,Linux和Windows的真正区别在于,Linux 事实上是Unix 的一种版本,而且来自Unix的贡献非常巨大。

     

    Unix强大的原因:

    (1)在Internet上,大量免费软件都是针对Unix系统编写的。由于有众多的Unix厂商,所以Unix也有许多实现方法。没有一个单独的组织负责Unix的分发。现在, 存在一股巨大的力量推动Unix社团以开放系统的形式走向标准化。

    (2)Windows系列是专用系统,由开发操作系统的公司控制接口和设计。在这个意义上这种 公司利润很高,因为它对程序设计和用户接口设计建立了严格的标准,和那些开 放系统社团完全不一样。

    些组织正在试图完成标准化Unix程序设计接口的任务 。

    特别要指出的是,Linux完全兼容POSIX.1标准。 安全问题对于IT管理员来说是需要长期关注的。主管们需要一套框架来对操作系 统的安全性进行合理的评估,包括:基本安全、网络安全和协议,应用协议、发 布与操作、确信度、可信计算、开放标准。

    无论按照什么标准对Windows和Linux进行评估,都存在一定的问题:每个操作系 统都不止一个版本。微软的操作系统有Windows98、 Windows NT、 Windows 2000 、 Windows 2003 Server和Windows CE,而Linux的发行版由于内核(基于2.2、2.4、2.6)的不同和软件包的不同也 有较大的差异。我们本文所使用的操作系统,都是目前的技术而不是那些"古老" 的解决方案。

     

     

    2. 什么是Linux? 
    简单地说, Linux是一套免费使用和自由传播的类 Unix操作系统,它主要用于基 于 Intel x86系列 CPU的计算机上。这个系统是由世界各地的成千上万的程序员 设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自 由使用的 Unix兼容产品。 Linux的出现,最早开始于一位名叫 Linus Torvalds 的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一 个代替 Minix(是由一位名叫 Andrew Tannebaum的计算机教授编写的一个操作系 统示教程序)的操作系统,这个操作系统可用于 386、 486或奔腾处理器的个人 计算机上,并且具有 Unix操作系统的全部功能,因而开始了 Linux雏形的设计。 



    Linux以它的高效性和灵活性著称。它能够在 PC计算机上实现全部的 Unix特性, 具有多任务、多用户的能力。 Linux是在 GNU公共许可权限下免费获得的,是一 个符合 POSIX标准的操作系统。 Linux操作系统软件包不仅包括完整的 Linux操 作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有 
    多个窗口管理器的 X-Windows图形用户界面,如同我们使用 Windows NT一样,允 许我们使用窗口、图标和菜单对系统进行操作。 


    Linux与其他操作系统有什么区别: Linux可以与 MS-DOS、 OS/2、 Windows等其他操作系统共存于同一台机器上。它 

    们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。 

     

    目前运行在 PC机上的操作系统主要有Microsoft的 MS-DOS、 Windows、 Windows 

    NT、 IBM的 OS/2等。早期的 PC机用户普遍使用 MS-DOS,因为这种操作系统对机 器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来 

    越低,人们可以相对容易地提高计算机的硬件配置,于是开始使用 

    Windows、Windows NT等具有图形界面的操作系统。 Linux是新近被人们所关注的 

    操作系统,它正在逐渐为 PC机的用户所接受。那么, Linux与其他操作系统的主 

    要区别是什么呢?下面从两个方面加以论述。 
    首先看一下Linux与 MS- DOS之间的区别。 在同一系统上运行 Linux和 MS-DOS 

    已很普遍,就发挥处理器功能来说, MS-DOS没有完全实现 x86处理器的功能,而 

    Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。 Linux可以 

    直接访问计算机内的所有可用内存,提供完整的 Unix接口。而 MS-DOS只支持部 

    分 Unix的接口。 
    就使用费用而言, Linux和 MS-DOS是两种完全不同的实体。与其他商业操作系统 

    相比, MS-DOS价格比较便宜,而且在 PC机用户中有很大的占有率,任何其他 PC 

    机操作系统都很难达到 MS-DOS的普及程度,因为其他操作系统的费用对大多数 

    PC机用户来说都是一个不小的负担。 Linux是免费的,用户可以从 internet上或 

    者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。 就操作系统 

    的功能来说, MS-DOS是单任务的操作系统,一旦用户运行了一个 MS-DOS的应用 

    程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而 Linux 

    是多任务的操作系统,用户可以同时运行多个应用程序。 再看一下 Linux与 

    OS/2、 Windows、 Windows NT之间的区别。 
    从发展的背景看, Linux与其他操作系统的区别是, Linux是从一个比较成熟的 

    操作系统发展而来的,而其他操作系统,如 Windows NT等,都是自成体系,无对 

    应的相依托的操作系统。这一区别使得 Linux的用户能大大地从 Unix团体贡献中 

    获利。因为 Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年 

    代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少 

    相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是 

    Unix的作者还是 Unix的用户,都认为只有 Unix才是一个真正的操作系统。 





    3. 首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件 

    , 
    只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司 
    都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些 
    Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区 别 是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置, 各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之 没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到 。 
    所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志 
    得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了, 
    或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下 
    安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜 
    是不希奇的 -- 当然,我觉得这是值得的。 


    所以,面对那么多Linux distribution,你应当选择哪个呢? 

    比较著名的Linux distribution有: 
    RedHat:最新版本6.2, 7.0beta。由于RedHat公司已经上市,获得了很多 
    商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的 
    工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为 
    Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你 
    自然会只认准一个Linux。 

    Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了 

    。 

    SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。 

    另外还有Debian,CorelLinux等dist,不一一介绍了。 

    还有你会看到国内媒体上吹捧的各种“中文Linux”,他们的优势主要是有 
    中文处理。但是如前一篇文章提到的,想用中文,用windows 2000最好。实际上 
    我觉得一个老7字班的前辈跟我说的一句话很好:“(对我们来说)在计算机上看 

    到 
    中文本身就是一件很古怪的事情”。如果你是抱着学习计算机的目的而来,那么 
    你不可能避免阅读英文文档。即使是microsoft的文档,有关编程的文档,最新的 

    也 
    全是英文。当然,要上BBS,看中文网页等,用英文的dist一样能做到 


    4. Linux和Windows的区别 

    和Linux 一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口 

    、网络和安全性。但是,Linux和Windows的真正区别在于,Linux 事实上是Unix 

    的一种版本,而且来自Unix的贡献非常巨大。是什么使得Unix如此重要?不仅在 

    于对多用户机器来说,Unix是最流行的操作系统,而且在于它是免费软件的基础 

    。在Internet上,大量免费软件都是针对Unix系统编写的。由于有众多的Unix厂 

    商,所以Unix也有许多实现方法。没有一个单独的组织负责Unix的分发。现在, 

    存在一股巨大的力量推动Unix社团以开放系统的形式走向标准化。另一方面Windo 

    ws系列是专用系统,由开发操作系统的公司控制接口和设计。在这个意义上这种 

    公司利润很高,因为它对程序设计和用户接口设计建立了严格的标准,和那些开 

    放系统社团完全不一样。一些组织正在试图完成标准化Unix程序设计接口的任务 

    。特别要指出的是,Linux完全兼容POSIX.1标准。 

    安全问题对于IT管理员来说是需要长期关注的。主管们需要一套框架来对操作系 

    统的安全性进行合理的评估,包括:基本安全、网络安全和协议,应用协议、发 

    布与操作、确信度、可信计算、开放标准。在本文中,我们将按照这七个类别比 

    较微软Windows和Linux的安全性。最终的定性结论是:目前为止,Linux提供了相 

    对于Windows更好的安全性能,只有一个方面例外(确信度)。 

    无论按照什么标准对Windows和Linux进行评估,都存在一定的问题:每个操作系 

    统都不止一个版本。微软的操作系统有Windows98、 Windows NT、 Windows 2000 

    、 Windows 2003 Server和Windows 

    CE,而Linux的发行版由于内核(基于2.2、2.4、2.6)的不同和软件包的不同也 

    有较大的差异。我们本文所使用的操作系统,都是目前的技术而不是那些"古老" 

    的解决方案。 

    用户需要记住:Linux和Windows在设计上就存在哲学性的区别。Windows操作系统 

    倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合;而Linux不同 

    于Windows,它的内核空间与用户空间有明显的界限。根据设计架构的不同,两者 

    都可以使操作系统更加安全。 

    Linux和Windows安全性的基本改变 

    对于用户来说,Linux和Windows的不断更新引发了两者之间的竞争。用户可以有 

    自己喜欢的系统,同时也在关注竞争的发展。微软的主动性似乎更高一些――这 

    是由于业界"冷嘲热讽"的"激励"与Linux的不断发展。微软将在下几个月对Window 

    s安全进行改观,届时微软会发布Windows XP的WindowsXP Service Pack 2。这一 

    服务包增强了Windows的安全性,关闭了原先默认开放的许多服务,也提供了新的 

    补丁管理工具,例如:为了避免受到过多无用的信息,警告服务和信使服务都被 

    关闭。大多数情况下,关闭这些特性对于增强系统安全性是有好处的,不过很难 

    在安全性与软件的功能性、灵活性之间作出折衷。 

    最显著的表现是:微软更加关注改进可用性的同时增强系统的安全性。比如:200 

    3年许多针对微软的漏洞攻击程序都使用可执行文件作为电子邮件的附件(例如My 

    Doom)。Service Pack2包括一个附件执行服务,为Outlook/Exchange、 Windows 

    Messenger和Internet Explorer提供了统一的环境。这样就能降低用户运行可执 

    行文件时感染病毒或者蠕虫的威胁性。另外,禁止数据页的可执行性也会限制潜 

    在的缓冲区溢出的威胁。不过,微软在WindowsXP Service Pack 

    2中并没有修改Windows有问题的架构以及安全传输的部分,而是将这部分重担交 

    给了用户。 

    微软的重点显然是支持应用程序的安全性。WindowsXP Service Pack 2中增强的 

    许多方面都是以Outlook/Exchange和Internet 

    Explorer作为对象的。例如:Internet Explorer中有一个智能的MIME类型检查, 

    会对目标的内容类型进行检查,用户可以获悉该内容中是否存在潜在的有害程序 

    。不过这一软件是不是能将病毒与同事的电子数据表区分开来呢? 

    WindowsXP Service Pack 2的另一个新特性是能够卸载浏览器的多余插件,这需 

    要终端用户检查并判断需要卸载哪些插件。Outlook/Exchange可以预览电子邮件 

    消息,因此用户可以在打开之前就将电子邮件删除。另一个应用安全的增强,防 

    火墙在网络协议栈之前启动。对于软件开发者来说,远方过程调用中权限的改变 

    ,使得安全性差的代码难以工作正常。 

    WindowsXP Service Pack 2也为Windows用户提供了许多华丽的新特性,但是问题 

    仍然存在:这些特性会不会对管理员甚至是终端用户造成负担?是不是在增加了W 

    indows操作系统代码安全性的同时让系统变得更加复杂? 

    Linux 与 Windows 的不同 
    虽然有一些类似之处,但Windows和Linux的工作方式还是存在一些根本的区别。 

    这些区别只有在您对两者都很熟悉以后才能体会到,但它们却是 Linux 思想的核 

    心。 

    Linux 的应用目标是网络而不是打印 

    Windows最初出现的时候,这个世界还是一个纸张的世界。Windows的伟大成就之 

    一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows 

    的后期发展。 

    同样,Linux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的 

    设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较 

    简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文 

    本为基础。 

    对那些熟悉图形环境的人来说,Linux服务器初看可能比较原始。但是Linux开发 

    更多关注的是它的内在功能而不是表面上的东西。即使是在纯文本的环境中,Lin 

    ux同样拥有非常先进的网络、脚本和安全能力。执行一些任务所需的某些表面上 

    看起来比较奇怪的步骤是令人费解的,除非您认识到 Linux 是期望在网络上与其 

    他 Linux系统协同执行这些任务。Linux的自动执行能力也很强,只需要设计批处 

    理文件就可以让系统自动完成非常详细的任务。Linux 的这种能力来自于其基于 

    文本的本质。 

    可选的 GUI 

    Linux有图形组件。Linux支持高端的图形适配器和显示器,完全胜任图形相关的 

    工作。现在,许多数字效果艺术家在Linux工作站上来进行他们的设计工作,而以 

    前这些工作需要使用IRIX系统来完成。但是,图形环境并没有集成到 Linux 中, 

    而是运行于系统之上的单独一层。这意味着您可以只运行 GUI,或者在需要时才 

    运行 GUI。如果您的系统主要任务是提供Web应用,那么您可以停掉图形界面,而 

    将其所用的内存和CPU资源用于您的服务。如果您需要在 GUI 环境下做一些工作 

    ,可以再打开它,工作完成后再将其关闭。 

    Linux 有图形化的管理工具,以及日常办公的工具,比如电子邮件、网络浏览器 

    和文档处理工具等。不过,在 Linux 中,图形化的管理工具通常是控制台 (命令 

    行) 工具的扩展。也就是说,用图形化工具能完成的所有工作,用控制台命令同 

    样可以完成。同样,使用图形化工具并不妨碍您对配置文件进行手工修改。其实 

    际意义可能并不是特别显而易见,但是,如果在图形化管理工具中所做的任何工 

    作都可以以命令行的方式完成,这就表示那些工作也可以由一个脚本来实现。脚 

    本化的命令可以成为自动执行的任务。Linux 同时支持这两种方式,并不要求您 

    只用文本或者只用 GUI。您可以根据您的需要选择最好的方法。 

    Linux 中的配置文件是人类可读的文本文件,这与过去的 Windows 中的 INI 文 

    件类似,但与 Windows 的注册表机制在思路上有本质的区别。每一个应用程序都 

    有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的 

    配置文件都存放于一个目录树 (/etc) 下的单个地方,所以看起来它们在逻辑上 

    是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件 

    的备份、检查和编辑工作。 

    文件名扩展 

    Linux不使用文件名扩展来识别文件的类型。相反,Linux根据文件的头内容来识 

    别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来 

    说没有任何作用。不过,有一些应用程序,比如 Web 服务器,可能使用命名约定 

    来识别文件类型,但这只是特定的应用程序的要求而不是 Linux 系统本身的要求 

    。 

    Linux通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予 

    可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。 

    这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防 

    止许多脚本病毒。 

    重新引导是最后的手段 

    如果您使用Windows已经很长时间了,您可能已经习惯出于各种原因(从软件安装 

    到纠正服务故障)而重新引导系统。在Linux思想中您的这一习惯需要改变。Linu 

    x在本质上更遵循“牛顿运动定律”。一旦开始运行,它将保持运行状态,直到受 

    到外来因素的影响,比如硬件的故障。实际上,Linux系统的设计使得应用程序不 

    会导致内核的崩溃,因此不必经常重新引导(与Windows系统的设计相对而言)。 

    所以除了Linux内核之外,其他软件的安装、启动、停止和重新配置都不用重新引 

    导系统。 

    如果您确实重新引导了 Linux 系统,问题很可能得不到解决,而且还会使问题更 

    加恶化。学习并掌握 Linux 服务和运行级别是成功解决问题的关键。学习 Linux 

    最困难的就是克服重新引导系统的习惯。 

    另外,您可以远程地完成Linux中的很多工作。只要有一些基本的网络服务在运行 

    ,您就可以进入到那个系统。而且,如果系统中一个特定的服务出现了问题,您 

    可以在进行故障诊断的同时让其他服务继续运行。当您在一个系统上同时运行多 

    个服务的时候,这种管理方式非常重要。 

    命令区分大小写 

    所有的 Linux 命令和选项都区分大小写。例如, -R 与 -r 不同,会去做不同的 

    事情。控制台命令几乎都是小写的。我们将在“ 第 2 部分. 控制台速成班”中 

    对命令进行更详细的介绍。 

    广泛的硬件支持可能是任何流行操作系统最基本的要求,也是可伸缩性的一个重要方面。Windows操作系统在这个方面做得的确非常出色:一方面,Windows的广泛使用使得任何硬件厂商在推出新的硬件时都会把Windows当作标准的平台加以支持,并且不断为新的Windows版本更新驱动程序;另一方面,大量的硬件支持又反过来推动了Windows平台的进一步普及。 
    Linux的硬件驱动程序通常都是由那些需要这些硬件的用户自己来开发的. Linux的共享性能够很快地给那些常用的硬件提供驱动程序,这些驱动程序需要后续的支持和帮助,来克服潜在的不稳定性。至于一些尚未普及的组件,如各式各样的USB设备,其驱动程序的开发将需要更多的支持,来满足不同用户的需要。 
    SMP(对称多处理器)支持 
    CPU是计算机系统的核心部分,是否具有良好的SMP支持将直接影响大型应用下的性能。 
    Windows 2000 Advanced Server的零售版本最多支持四路SMP,OEM版可以支持最多达32路的SMP。对CPU的支持级别和Windows 4.0相比没有什么变化,但是对SMP的实现代码进行了改进,使得高性能的缩放可以更为“线性”地进行。Windows NT Server 4.0企业版已经实现了创纪录的性能价格水平,随着对SMP缩放的改进,这一趋势将在Windows 2000 Advanced Server和Datacenter Server中得到延续。在采用八路设计或者多于八路设计的系统中,性能的提高最为明显。 
    而Linux正致力于解决核心部分中的SMP支持,以提高Linux在大型应用下的性能。尽管Linux不是为SMP而设计的,Linux Torvalds也曾经说过Linux的SMP评测表现很差,但是我们期望这些问题能够在2.4版本内核中得到解决,使更多的学校或者企业可以使用经过考验的Linux来实现他们的核心程序。 
    对群集的支持 
    Windows 2000 Server具有强大的群集功能。Compaq最近之所以能在TPC-C比赛中傲视群雄,击败所有对手,靠的就是一个巨大的有着12个节点,96个处理器的群集,而它们运行的是Windows 2000 Server。 
    尽管Linux没有在高端系统中运行关键性应用程序方面有出色记录,但最近Linux在群集项目也发布了不少东西,希望Linux的开发者大军可以开发出更完善的群集功能 
    对特定计算环境的支持 
    使每一个系统都有适合于自己的工作场合,这就是系统对特定计算环境的支持。 
    微软开发了不同的操作系统来完成不同类型的任务。Windows CE适用于小型的手持式电脑和笔记本电脑,Windows 95/98和Windows 2000 Professional适用于桌面计算机,而Windows NT 4.0和Windows 2000 Server则适用于大型服务器应用程序。作为一个系列操作系统家族,Windows对各种不同的工作环境提供了良好的伸缩性支持。 
    由于Linux大部分可用的平台处于开发的初始阶段,对于各种不同计算环境的支持将是Linux系统的下一步目标。 
    文档编制 
    众所周知,随着系统变得越来越复杂,功能越来越强大,编制一个好的文档是非常重要的。这有助于用户对系统的理解和管理。详尽的文档说明,有助于我们熟练地掌握它所有的功能和特性。 
    微软通常为其产品提供了深入细致的文档说明,在文档的本地化方面也做得很好。Linux产品的文档说明需要进一步的规范。 
    回答者:可爱的小刚丝 - 试用期 一级 9-6 13:12 

    1、从系统构成上来说,linux是开源软件,而windows不是。那就意味着,如果你喜欢你可以对linux系统做你想做的任何改动。而这点对于windows来说,是想也不要想的。 
    2、从运行的稳定性来说。各有利弊。但linux的任何程序都是相对独立的,哪怕gnome和kde(图形界面)也是独立的。而软件的崩溃只是软件的崩溃,很少造成系统的瘫痪(死机)。只有重新运行程序就好了。windows吗,就不用说了,没见过windows死机的人,我没见过。 
    3、从多用户来说,linux是真正的多用户系统。可以多个用户真正登录,这对于windows来说,虽然也有了雏形,但太儿戏化了,摆设而已。 
    4、对于中文的支持来说。windows的多个版本对于windows的支持是很强的。字体也很漂亮。而linux虽然也支持中文,但要完全支持中文是要手动做很多设置的,不过就算做的再好。总有机会看到中文乱码的(因为几乎每个软件都要设置字体和字符编码的)。而且中文的字体比较烦,不是很好看。(好看的基本都不是开源的。ps:如果你都不想为操作系统花钱,还会去买几个字体吗。当然也有盗版@不是用linux的初衷了。) 
    5、对于系统更新来说,apt是目前linux不二的选择了,快捷普遍、简单。而且无什么正版验证之虞的。windows也不错,可以漏洞总比补丁来的快,更何况我没用过正版的呢。 
    6、从安全性来说。其实上一条也说过这个问题了。我们用windows时,杀毒软件、防火墙、防垃圾软件、防间谍软件占去了大部分的系统资源。可这样还是防不胜防的。有谁没中过毒或木马、流氓软件呢? 
    linux?不用这些烦人的东西。 
    7、从应用软件来说,虽然linux下的软件有很多,但和windows来说,真的没办法比的。谁让windows几乎成了操作系统的代名了呢。 
    8、从易用性来说,我自我的感觉,在常用的windows、mac、linux中,无论界面、鼠标操作、文件格式,windows都是相当容易上手的。其他的操作系统,几乎都要是摸索中探索的。更何况linux的很多配置都是基于文档的,也就是要手工的修改一些配置文件。对于想我这样的老人来说,厄长的代码,明天还能记得否? 
    windows几乎一支鼠标就能解决所有问题。呵呵 
    9、综述:当然各种的优缺点远不至就这些,就不过说了。 
    如果要出于个人应用的话,还是用windows吧。学习容易,资料好早。 
    如果出于学习的话,还是用用linux吧,但你要做好不厌其烦的心理准备!对于混乱的linux版本来说,你要记得同样的问题,可以有n种解决办法,但可能只有一种合适你的。

    展开全文
  • windows 程序设计

    2011-07-24 21:16:30
    从程序写作者的角度看,一致的使用者接口来自于Windows建构菜单和对话框的内置程序。所有菜单都有同样的键盘和鼠标接口,因为这项工作是由Windows处理,而不是由应用程序处理。 为便于多个程序的使用,以及这些程序...
  • 10行代码带你入门Windows编程

    千次阅读 多人点赞 2022-04-22 12:21:08
    手把手带你入门Windows
  • WINAPI 就是_stdcall,只是为了让我们清楚知道这里的_stdcall 表示的是一种调用约定,它让编译器知道了应当以Windows兼容的方式来产生机器指令。 如果我们在写WinMain函数的时候去掉这句WINAPI 而直接写: int ...
  • 用VS 2013 创建Win32项目 #include<Windows.h> #include"resource.h" ...LRESULT CALLBACK WindowProc...WINAPI :标准调用方式 指调用约定 约定了 1.函数入栈方式 2.由谁来平衡堆栈 WinMain的四个参数 { HIN..
  • 前面我们已经强调过了,windows图形界面的应用程序的入口函数名必须为WinMain ,而且调用约定必须为_stdcall。因为入口函数是由操作系统来调用的。既然如此,该函数的四个参数也是由操作系统来赋值...
  • 演练:创建传统的 Windows 桌面应用程序 (c + +)05/28/2020本文内容本演练演示如何在 Visual Studio 中创建传统的 Windows 桌面应用程序。 要创建的示例应用程序使用 Windows API 显示 "Hello,Windows desktop!" ...
  • 本文描述了在应用环境为Windows系统下,需要使用文件存储的场景。本文采用了私有化部署的方式向用户提供了文件共享存储服务。用NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。存储...
  • 文章目录前言分成不同的函数为了更好的封装利用句柄如何编写Windows应用程序1.入口函数WinMain2.创建窗口Step1.设计窗口类Step2.注册窗口类Step3.创建窗口 前言 接上一讲: 分成不同的函数为了更好的封装利用 ...
  • 第1章 Windows应用程序开发入门 16 1.1 第一个实例程序 16 1.1.1 sta rt.exe 16 1.1.2 Windows API 17 1.1.3 程序入口函数 17 1.1.4 start.c代码分析 17 1.2 编译代码 18 1.2.1 安装Visual Studio 18 1.2.2 ...
  • 常见的域环境是使用:Windows Server 2012 R2、Windows7、Windows Server 2003 操作系统搭建windows域环境。 下面,创建一个域环境,配置一台Windows Server 2012 R2服务器,将其升级为域控制器,然后将Windows ...
  • Windows命名文件,路径和命名空间

    千次阅读 2020-10-16 19:49:45
    使用Windows API进行文件和设备I / O的Windows开发人员应了解文件和目录名称的各种规则,约定和限制。 可以使用文件I / O API从磁盘,设备和网络共享访问数据。文件和目录以及名称空间是路径概念的一部分,路径是对...
  • Windows(一):窗口开发原理

    千次阅读 2020-02-08 21:20:20
    API : 应用程序编程接口(Application Programming Interface),如同C语言的库函数一样,Windows中也有封装好的函数和接口用于操作Windows应用与操作系统即Windows API。头文件为:Windows.h(在VS2019中大概有一万...
  • Windows窗口程序之新建窗口(C++)

    千次阅读 2021-05-18 23:26:06
    Windows窗口程序之新建窗口 创建Windows的流程
  • windows外壳扩展编程之windows右键菜单

    千次阅读 2011-12-09 16:55:38
     Windows外壳扩展(Windows Shell Extension),是一类特殊的COM对象,在这类COM对象中用户可以加入自己的特殊功能,而Windows外壳扩展最终都会被Windows Explorer所引用[1]。  A shell extension is a ...
  • windows xp基础知识

    2011-08-05 12:13:48
    菜单约定 可操作菜单选项与不可操作菜单选项 “…”的含义 此菜单项有相应的对话框 组合键的使用 ctrl+c(复制) ctrl+v(粘贴) ctrl+x(剪切) 三角形标记的含义 此菜单项有子菜单 分组线 将功能相似的菜单项...
  • 1.7 本书示例约定 第2章 窗口处理 第3章 设备上下文(DC) 第4章 绘图函数 第5章 位图和图标 .. 第6章 菜单处理 第7章 内存处理 第8章 文件处理 第9章 处理文本和字体 第10章 硬件和系统 第11章 Windows消息 ...
  • c# winrtI was trying to access some of the sensors that are built into this Intel Ultrabook that runs Windows 8. However, while there's support for Location Sensors built into the .NET 4 libraries on ...
  • 1.Windows API是什么?根据其完成的功能可分为几种类型? Windows操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的核心应用程序编程接口的称法。它被设计为各种...
  • 本文描述了在应用环境为Windows系统下,需要使用文件存储的场景。本文采用了私有化部署的方式向用户提供了文件共享存储服务。用NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。存储...
  • 在VBA中调用Windows API的方法

    千次阅读 2019-10-08 17:52:14
    在VBA中使用Windows API VBA是一种强大的编程语言,可用于自定义Microsoft Office解决方案。通过使用VBA处理一个或多个Office应用程序对象模型,可以容易地修改Office应用程序的功能或者能够使两个或多个Office应用...
  • 本文介绍使用Visual Studio 2022的MASM开发x64汇编程序hello world的环境配置和汇编代码,作为学习CPU指令的起点。分两个版本的hello world, 一个是console版本,另一个是windows版本。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,132
精华内容 5,252
热门标签
关键字:

windows菜单的约定