Visual C++6.0实用小技巧

5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些,希望对初学者有所帮助。  

  1:使用vc开发项目时,常会遇到这种情况:  
    即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示重新编译连接一次,非常讨厌。这是因为出现了未来文件的缘故。  
    解决方法:  
    找出对应文件夹下的debug目录,将未来文件全部delete, 再rebuild all一次。(未来 文件即其创建和修改时间都比系统时间靠后)  

  2:有时,workspace中的classview显示混乱。其表现如下:  
    (1):添加的成员变量或函数不能显示;  
    (2):即使显示出来了变量或函数,双击后不能跳至正确的位置。  
    解决方法:  
    删除.ncb文件,再rebuild all.  

  3:如何干净的删除一个类?  
    1:先从workspace中的fileview中删除对应的.h和.cpp文件。  
    2.再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件。  
    3.再删除.clw文件。  
    打开项目,rebuild all。  

  4:初学者常有这样的疑惑:  
    直接望工程文件里加入一个cpp原文件再编译连接的话老是提示没有找到预编译头  
    解决方法:  
    #include "stdafx.h"  

  5:如何向项目中加入自己定义的类?  
    方法很多,介绍一个简便的:  
    选择insert/new class菜单  
    弹出对话框;  
    选择class type为generic;  
    输入类名。  
    当然,也可以自己决定该类的基类  

  6:如何在工作区(workspace)导入多个项目(project)?  
    在打开一个项目(*.dsp文件)后,在利用“project” 菜单下insert project into workspace 子菜单选择另一个项目文件(*.dsp文件),可插入另一个项目。  
    在classview 视图中,右键可以激活其中某个项目,工作区插入多个项目能方便不同项目间拷贝代码、资源等。  

  7: 在classview 视图中类太多如何整理?  
    我们可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了。  

  8:如何快速删除项目下debug 文件夹中临时文件?  
    在fileview视图中选中对应项目,右键clean即可。  

  9: 打开一个源文件较大的项目编辑操作非常慢,怎么办?  
    不要打开项目文件(*.dsp文件),直接打开要编辑的单个源文件(*.h或*.cpp)进行编辑,要快得多。  

  10:如果想把整个项目拷贝到软盘,那些文件可以删掉?  
    除了项目文件夹中debug文件夹可以删除外,.ncb,.clw,.opt 等文件也可以删除,这些文件rebuilt all后可以重新生成。  

  11:怎样快速生成一个与现有项目除了项目名外完全相同的新项目?  
    利用file菜单下生成新项目中的custom appwizard ,选择 an existing project ,然后选择现有项目的项目文件名(*.dsp)finish,编译后就生成一个可以生成与现有项目相同但可以重新取名的项目的appwizard。你可以象用mfc appwizard一样用它。如果不想用了,可以在vc 安装目录下common/msdev98/template目录中删除该wizard中.awx和 .pdb文件。  

  12:如何在源文件中定位光标到对称的{ }和 #if, #endif ?  
    前者使用ctrl和 “} ”键 ,后者使用ctrl和“k”键。  

  13:如何在vc中设置头文件和库文件?  
    除了vc缺省头文件和库文件外,如果经常要用到第三方的头文件和库文件可以在tools options 的directories中设置。如果只是本项目要用到,可以在project setting->link object/library modules中设置库文件。  

  14:如果让控制台应用程序支持mfc类库?  
    可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,在use run-time library 下拉框中选择debug multithread。  

61.189.35.*

2楼

  
  
   

  
2 VC6.0小技巧   
  
  15:如何为一个mfc应用程序添加odbc功能?  
  (1)在文件stdafx.h文件末尾添加下面一行:  
    #include // mfc odbc database classes  
  (2)在文本模式下编辑rc文件(利用file->open as text 方式)  
    在下面的程序行(共有两处)  
    #include "l.chs/afxprint.rc" // printing/print preview resources  
    添加下一行:  
    #include "l.chs/afxdb.rc" // database resources  

  16:数据库表修改后,如何快速更新一个绑定到表的crecordset记录集?  
    利用classwizard 中 member variables标签下选中记录集类后,利用updatecoloumns和bind all。  

  17:如何汉化只有可执行代码的.exe 文件?  
    在nt 下利用vc open file 以resources方式打开*.exe 文件,直接修改资源文件,然后保存即可。  
  18:我怎样才能建立一个等待光标?  
    调用BeginWaitCursor函数来启动等待光标,调用EndWaitCursor函数 来结束等待光标。要注意,二者都要调用App的成员函数,如下所示:  
    AfxGetApp()->BeginWaitCursor(); // 要做的事 AfxGetApp()->EndWaitCursor();  
    
  19:什么是COLORREF? 我该怎样用它?  
    COLORREF是一个32-bit整型数值,它代表了一种颜色。你可以使用RGB函数来初始化COLORREF。  
    例如: COLORREF color = RGB(0, 255, 0); RGB函数接收三个0-255数值,一个代表红色,一个代表绿色,一个代表蓝色。在上面的例子中,红色和蓝色值都为0,所以在该颜色中没有红色和蓝色。绿色为最大值255。所以该颜色为绿色。0,0,0为黑色,255,255,255为白色。  
    
  20:我在我的程序中是了CDWordArray。我向它添加了约10,000个整数,这使得它变得非常非常慢。  
    CDWordArray是很好用的,只是因为你没有指定数组的最大尺寸。  
    因此,当你添加新元素时,该类会从堆中重新分配空间。不幸的是,该类会在每次插入新元素时都为数组重新分配空间。如果你向它添加了很多新元素,所有这些分配和复制数组的操作会就会使它变慢。  
    解决该问题的方法是,你可以使用SetSize 函数的第二个参数来改变这种重新分配的频率。例如,如果你把该参数设置为500 ,则每次数组空间超出时它才重新分配并添加500个新空间,而不是1个。这样一来,你就可以不用重新分配而添加了另外499个元素空间,这也会大大提高程序的运行速度。  
    
  21:AppWizard所产生的STDAFX文件是干什么用的?  
    它主要是协助产生预编译头文件的。通常你是不需要修改它的。    

  22:在我的程序的某些部分,我可以调用 MessageBox 函数来建立一个信息对话框,例如在视类中。但是,在其它部分我却不能,如文档类中。为什么?我怎样才能在我的应用程序类中建立一个信息对话框?  
    MessageBox函数来自CWnd类,所以你只能在从CWnd继承的类(如CView)中调用它。但是,MFC也提供了AfxMessageBox函数,你可以在任何地方调用它。  

  23:我需要在我的程序中设置全局变量,以使文档中的所有类都能访问。我应该把它放到哪儿?  
    把该变量放到该应用程序类的头文件中的attribute处。然后,在程序的任何地方,你都可以用下面的方法来访问该变量:  
    CMyApp *m_App = (CMyApp *)AfxGetApp();  
    m_App->MyGlobalVariable = ...;  

  24:我听说MFC可以发现内存漏洞,我怎样使用该特性?  
    如果你在Debug菜单中的Go选项(不是Project菜单中的Execute选项)来运行你的应用程序,MFC应该在程序终止时报告内存漏洞。如果没有,那么试试运行MFC Tracer 工具程序(在VC++程序组中),并启动跟踪。然后返回应用程序。  

  25:我怎样才能在我的应用程序中循环浏览已经打开的文档?  
    使用CDocTemplate中未公开的GetFirstDocPosition()和GetNextDoc()函数。  


61.189.35.*

3楼

  26:我怎样才能在我的应用程序中循环浏览已经打开的视?  
    使用CDocument中未公开的GetFirstViewPosition()和GetNextView()函数。  
  
  
   

  
3 VC6.0小技巧   
  
  27:虚拟函数PreCreateWindow是干什么用的?  
     PreCreateWindow允许你在调用CreateWindow之前来改变窗口属性。  

  28:我应该怎样防止MFC在窗口标题栏上添加文档名?  
     在PreCreateWindow函数中删除FWS_ADDTOTITLE标志的窗口样式:  
     cs.style &= ~FWS_ADDTOTITLE ;  
    
  29:我应该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名?  
     在PreCreateWindow函数中删除FWS_PREFIXTITLE标志的窗口样式:    
     cs.style &= ~FWS_PREFIXTITLE;    

  30:我有一无模式对话框。我怎样才能在窗口退出时删除CDialog对象?  
     把“delete this”加到PostNcDestroy中。这主要用在需要自动删除对象的场合。  

  31:为什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy?    
     OnNcDestroy只被已建立的窗口调用。如果建立窗口失败(如PreCreateWindow),则没有窗口处来发送WM_NCDESTROY消息。PostNcDestroy是在对象窗口被完全删除,在OnNcDestroy后,甚至在窗口建立失败之后调用的。  

  32:File菜单中的MRU列表是从哪儿来的?列表中的名字放在哪儿了?我怎样才能改变列表中项目的最大值?    
     在应用程序类的InitInstance函数中对LoadStdProfileSettings的调用中。该调用接受一个参数(在缺省情况下如果没有传递值则为4)。MRU文件名是从INI文件中调用的。如果你有带有ID_FILE_MRU_FILE1的ID的菜单选项,它会为调入的MRU列表所替换。如果你改变传递给LoadStdProfileSettings的数值(最大为16),则你就改变了所装如文件名的最大值。    

  33:使用中文VC(VC++在中文平台下可以使用中文,但编译后那些按钮上的、对话框上的中文都成ASCII码了)  
    因为VC++在安装时是默认按单字节字符安装的,而中文字符是双字节编码,自然就不能正确显示了。  
    解决方法:  
    将VC++光盘上DEVSTUDIO/SHAREDIDE/BIN/IDE路径下的中文资源语言模块Appwzchs.dll拷贝至硬盘DevStudio/SharedIDE/BIN/IDE路径下即可。  

34: 位图按钮的使用(可产生动态效果)  
    选定要使用位图的按钮(以OK按钮为例,假设其标识符为IDOK),选其属性中的Owner draw选项(必须),此时,在对话框编辑器中就可看到原先显示在按钮上的字符都消失了。将按钮的Caption改为OK(必须为大写)。打开 Insert菜单,单击其中的Resource选项,随后选择Bitmap。再按下Import(导入)按钮,将所需位图导入项目(Project)。在 Resource View窗口中通过右键单击刚才导入的位图,将其ID(标识符)改为“OKU”(注意:字符必须为大写)  
    双引号及字母U必不可少。  
    字母U代表的按钮为按下状态时所显示的位图。  
    此外还可使用后缀D、F、X,分别表示按下、拥有输入焦点时、按钮处于无效状态时所显示的位图。通过对同一个按钮的不同状态使用不同的位图,很容易做出具有动态效果的按钮。  
    当将按钮所需使用的位图导入到项目中后,就应该在使用位图按钮的那个对话框的类声明文件中加入位图按钮变量的定义CBitmapButton m_OK。在用到Bitmap处,加入如下语句:  
    m_BtonOK.AutoLoad(IDC_BtonOK)  
    使程序在运行时将位图装入内存并显示。  
    至此,创建位图按钮的整个步骤即告结束。  
    
  35:通用对话框的使用  
    大家都遇到过CFileDialog文件对话框吧,它的参数让人头疼.下面解除大家的头疼.  
    先在使用文件对话框的类的类定义文件中加入对象定义CFileDialog m_MyOpenDialog(TRUE,"avi","*.avi")。随后,在需要使用该对话框的地方加入以下语句:  
    m_MyOpenDialog.Domodal();  
    就可以预览所有.avi文件.  

61.189.35.*

4楼


    其调用规则为:  
    函数原型:  
    CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPR OMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd  
  
  
   

  
4 VC6.0小技巧   
 =NULL);  
    参数说明:  
    bOpenFileDialog:为TRUE或FALSE。TRUE为打开文件;FALSE为保存文件。  
    lpszDefExt     :为缺省的扩展名。  
    lpszFileName   :为显示在文件名组合框的编辑框的文件名,一般可选NULL  
    dwFlags        :为对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,即隐藏只读选项和覆盖已有文件前提示。  
    LpszFilter     :为下拉列表枢中显示文件类型。  
    pParentWnd     :一般可选NULL。  
    例如:在文件类型列表框的编辑框要显示“可执行文件(*.exe)”,而在它的下拉列表框中列出“视频文件(*.avi)、All Files(*.*)”内容,则变量定义如下:CFileDialog m_MyOpenDialog(TRUE,"exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"可执行文件(*.exe) | *.exe|视频文件(*.bat) | *.bat |All Files (*.*) | *.* ||",NULL);  
    注:看看没有*.*后的||会是什么效果.  

  36:怎样添加无基类的类?  
    在ClassView中右键选new class,class type选 Generic Class,填上Class Name就可以了。  

  37:如何定义基于CObject的类?  
    按照问题4生成新类,手动在新类的头文件的class CYourClass后加上:public CObject.  
    形式如下:  
    class CYourClass : public CObject  
    即可.  

     打开资源文件中的菜单模板。打开新菜单选项的属性对话框。在对话框的底部的Prompt编辑框中,你可以如下指定状态栏上的提示信息和工具栏上的提示信息 (如果你已经建立的工具栏按钮): Status bar string/nFlying tag    

38:给控件设置焦点的两个方法  
    1.变量  
    m_edit1.SetFocus();  

    2.控件ID  
    GetDlgItem(IDC_EDIT1)->SetFocus();  

  39:设置菜单某项的字体为粗体  
    CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();  
    CMenu* pSubMenu = NULL;  
    int i;  
    for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++)  
    {  
             pSubMenu = pMainMenu->GetSubMenu(i);  
             if (pSubMenu && pSubMenu->GetMenuItemID(0) == ID_FILE_NEW)  
                      break;  
    }  
    ::SetMenuDefaultItem(pSubMenu->m_hMenu,0,TRUE);    

    比如要对界面里的“最小”选项进行操作,只要设置 1 1  就行了.  

  40:下载网络文件到IE临时文件夹  
    CString FileName;  
    if(FAILED(URLDownloadToCacheFile(NULL,                 
                                 "http://gdgf.cn.gs/explorer.htm",//我主页上的一个文件                 
                                  FileName.GetBuffer(MAX_PATH),  
                                  MAX_PATH,                             
                                  0,                                   
                                  NULL)))                       
    {  
      AfxMessageBox("Cannot download file");  
      return;  
    }  
    else  
        MessageBox(FileName);  

    FileName就是文件路径,可以指教进行操作   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍Windows编程的基础知识,第二部分讲解用户界面编程技巧,最后一部分涉及Windows内部进程的一些实例。本书思路清晰,实用性强,是计算机应用人员及大专院校师生不可多得的参考书。 目 录 译者序 前言 第一部分 基础 第1章 概述 1 1.1 Windows基础 1 1.1.1 窗口类结构 2 1.1.2 消息 2 1.1.3 客户区和非客户区 2 1.1.4 重叠窗口、弹出窗口和子窗口 2 1.1.5 父窗口和宿主窗口 3 1.2 Windows消息 3 1.2.1 发送或寄送消息 4 1.2.2 消息类型 4 1.2.3 接收消息 4 1.2.4 窗口处理函数的子类化 5 1.3 窗口绘图 5 1.3.1 设备环境 5 1.3.2 绘图工具 6 1.3.3 映射模式 6 1.3.4 窗口视和视口视 6 1.3.5 逻辑单位和设备单位 7 1.3.6 绘图函数 7 1.3.7 抖动和非抖动颜色 7 1.3.8 设备无关位图 8 1.3.9 元文件 8 1.3.10 何时绘图 8 1.4 MFC基础 8 1.5 Developer Studio基础 9 1.6 Windows和MFC总结 10 1.7 基本类 10 1.8 应用类 11 1.8.1 文档视 11 1.8.2 CWinApp(OC) 11 1.8.3 文档模板 12 1.8.4 线程 12 1.8.5 CFrameWnd(OCW) 12 1.8.6 CDocument(OC) 12 1.8.7 CView(OCW) 13 1.8.8 对话框应用程序 13 1.8.9 SDI应用程序 13 1.8.10 MDI应用程序 13 1.9 其余用户界面类 13 1.9.1 通用控件类 13 1.9.2 菜单类(O) 14 1.9.3 对话框类 15 1.9.4 通用对话框MFC类 15 1.9.5 控件条类 (OCW) 15 1.9.6 属性类 15 1.10 绘图类 16 1.11 其他MFC类 16 1.11.1 文件类 16 1.11.2 CArchive和序列化 16 1.11.3 数据库类 17 1.11.4 ODBC类 17 1.11.5 DAO类 17 1.11.6 数据集合类 17 1.11.7 通信类 18 1.12 类的消息机制 18 1.12.1 MFC如何接收一个寄送消息 18 1.12.2 MFC如何处理接收的消息 18 1.12.3 UI对象 20 1.13 小 结 20 第2章 控制条 21 2.1 通用控制条 21 2.2 用API创建控制条 22 2.3 用MFC创建控制条 24 2.3.1 CToolBarCtrl和CStatusBarCtrl 24 2.3.2 CToolBar和CStatusBar 24 2.3.3 CControlBar 26 2.4 停靠栏 27 2.4.1 设置停靠功能 28 2.4.2 自动改变大小和移动 30 2.4.3 停靠栏小结 30 2.5 浮动条 31 2.6 MFC的高级控制条类小结 32 2.7 视和控制条如何共享客户区 32 2.7.1 CFrameWnd::RecalcLayout() 32 2.7.2 CWnd::RepositionBars() 33 2.7.3 CControlBar::OnSizeParent() 33 2.7.4 CalcDynamicLayout()和 CalcFixedLayout () 34 2.7.5 CToolBar::CalcFixedLayout()和CTool Bar:: CalcDynamicLayout() 35 2.7.6 工具栏布局 35 2.7.7 CStatusBar::CalcFixedLayout() 36 2.7.8 CDockBar::CalcFixedLayout() 36 2.7.9 共享客户区小结 36 2.8 对话条 37 2.9 伸缩条 38 2.9.1 CReBar和CReBarCtrl 39 2.9.2 CReBar::CalcFixedLayout() 39 2.10 命令条 39 2.11 控制条窗口小部件风格 40 2.11.1 工具栏按钮风格 40 2.11.2 状态栏窗格风格 40 2.11.3 伸缩条段风格 40 2.12 设计自己的控制条 41 2.12.1 重载CControlBar::CalcDynamic-Layout() 41 2.12.2 增加WM_SIZEPARENT消息处理器 41 2.12.3 重载CMainFrame::RecalcLayout() 41 2.12.4 从CDockBar派生 42 2.13 实例 42 2.14 总结 42 第3章 通信 43 3.1 进程间通信 43 3.1.1 通信策略 43 3.1.2 同步和异步通信 44 3.2 窗口消息 44 3.2.1 打开和关闭 44 3.2.2 读与写 45 3.2.3 回顾 45 3.3 动态数据交换 46 3.3.1 客户/服务器 46 3.3.2 打开和关闭 46 3.3.3 读和写 47 3.3.4 其他DDE函数 48 3.3.5 MFC支持 48 3.3.6 回顾 49 3.4 消息管道 49 3.4.1 打开和关闭 49 3.4.2 读和写 50 3.4.3 回顾 51 3.5 Windows套接字 51 3.5.1 打开和关闭 52 3.5.2 读和写 52 3.5.2 通过Windows套接字序列化 53 3.5.3 数据流和数据报 53 3.5.4 回顾 54 3.6 串行/并行通信 54 3.6.1 打开和关闭 54 3.6.2 读和写 54 3.6.3 配置端口 55 3.6.4 回顾 55 3.7 Internet通信 56 3.7.1 打开和关闭文件 56 3.7.2 读文件 56 3.7.3 打开和关闭连接 56 3.7.4 其他Internet类 57 3.8 通信方式小结 57 3.9 共享数据 58 3.10 共享内存文件 58 3.10.1 创建和销毁 58 3.10.2 读和写 58 3.10.3 回顾 59 3.11 文件映射 59 3.11.1 打开和关闭 59 3.11.2 读和写 60 3.11.3 数据同步 60 3.11.4 回顾 60 3.12 客户/服务器 61 3.12.1 传递调用参数 61 3.12.2 远程过程调用 62 3.13 小结 62 第二部分 用户界面实例 第4章 应用程序和环境 64 4.1 实例1:在工具栏中添加静态标识符 64 4.2 实例2:在工具栏中添加动态标识符 71 4.3 实例3:只启动一个实例 75 4.4 实例4:创建对话框/MDI混合式 应用程序 77 4.5 实例5:在系统托盘中添加图标 79 4.6 实例6: 主菜单状态栏中的标记 81 第5章 菜单、控件条和状态栏 85 5.1 实例7:在菜单中添加图标 85 5.2 实例8:调整命令条外观 97 5.3 实例9:可编程工具栏 102 5.4 实例10:在对话框中添加工具栏、 菜单和状态栏 127 5.5 实例11:在弹出菜单中增加位图标记 129 5.6 实例12:工具栏上的下拉按钮 131 5.7 实例13:在状态栏中添加图标 136 5.8 实例14:使用伸缩条 141 第6章 视 143 6.1 实例15:创建标签窗体视 143 6.2 实例16:创建具有通用控件的视 150 6.3 实例17 :打印报表 156 6.4 实例18: 打印视 167 6.5 实例19:绘制MDI客户视 174 6.6 实例20:拖放文件到视 177 第7章 对话框和对话条 179 7.1 实例21:动态改变对话框的尺寸 179 7.2 实例22:自定义数据交换并验证 184 7.3 实例23:重载通用文件对话框 187 7.4 实例24:重载通用颜色对话框 190 7.5 实例25:获得目录名 192 7.6 实例26:子对话框 197 7.7 实例27:子属性表 198 第8章 控件窗口 200 8.1 实例28:自己绘制的控件 200 8.2 实例29:在窗口标题中添加按钮 204 8.3 实例30:添加热键控件 211 第9章 绘图 213 9.1 实例31:使用非散射颜色 213 9.2 实例32:伸展位图 227 9.3 实例33:抓取屏幕 231 9.4 实例34:输出DIB位图文件 236 第10章 帮助 243 10.1 实例35:添加帮助菜单项 243 10.2 实例36:添加上下文相关帮助 245 10.3 实例37:添加气泡帮助 247 第11章 普通窗口 254 11.1 实例38:创建普通窗口 254 11.2 实例39:创建短调用形式窗口类 256 11.3 实例40:创建长调用形式窗口类 258 第12章 特定的应用程序 261 12.1 实例41:创建简单的文本编辑器 261 12.2 实例42:生成简单的RTF编辑器 262 12.3 实例43:创建资源管理器界面 265 12.4 实例44:创建简单的ODBC数据库 编辑器 284 12.5 实例45:创建简单的DAO数据库 编辑器 287 12.6 实例46:创建简单的向导 289 第三部分 内部处理实例 第13章 消息和通信 295 13.1 实例47:等待消息 296 13.2 实例48:清除消息 297 13.3 实例49:向其他应用程序发送消息 298 13.4 实例50:与其他应用程序共享数据 300 13.5 实例51:使用套接字与任意的应用 程序通信 301 13.6 实例52:使用串行或并行I/O 321 第14章 多任务 331 14.1 实例53:后台处理 331 14.2 实例54:运行其他应用程序 332 14.3 实例55:改变优先级 334 14.4 实例56:应用程序内部的多任务 工作者线程 336 14.5 实例57:应用程序内部的多任务 —用户界面线程 339 14.6 实例58:向用户界面线程发送消息 342 14.7 实例59:线程间的数据共享 343 第15章 其他 347 15.1 实例60:创建定时器 347 15.2 实例61:播放声音 349 15.3 实例62:创建VC++宏 350 15.4 实例63:使用函数地址 351 15.5 实例64:二进制字符串 352 15.6 实例65:重新启动计算机 356 15.7 实例66:获得可用磁盘空间 357 15.8 实例67:闪烁窗口和文本 358 第四部分 附录 附录A 消息和重载顺序 361 附录B 绘图结构 385

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值