社区
ATL
帖子详情
VS2019类向导中,为何只有MFC类,而没有ActiveX控件中的MFC类
lzh91711
2020-03-28 05:58:51
如上图。
vs2017是有的。如下图。
...全文
1022
2
打赏
收藏
VS2019类向导中,为何只有MFC类,而没有ActiveX控件中的MFC类
如上图。 vs2017是有的。如下图。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒋晟
2020-06-20
打赏
举报
回复
bug太多又没什么人用所以去掉了
我喝多了
2020-06-19
打赏
举报
回复
问微软, 2019对MFC支持不是太好
MFC
调用Delphi开发的
ActiveX
控件
一般地,高版本Delphi
向导
开发的
ActiveX
控件
直接在
MFC
应用程序
中
使用是有问题的,其
中
一个问题就是
MFC
中
出现双接口标识的断言,或者直接初始化应用时出现其它断言,解决办法包括修改
MFC
头文件等暴力办法,该Hello World演示了如何不加修改让
MFC
应用程序使用Delphi开发的
ActiveX
控件
,需要删除Delphi
向导
生成的一些不必要的接口和方法导出,在Delphi项目
中
处理就OK,
MFC
中
正常使用。
标准
MFC
WinSock
ActiveX
控件
开发实例
主要介绍如何开发一个
ActiveX
控件
,提供接口,与相应事件挂钩。文
中
涉及到VARIANT,SAFEARRAY,BSTR的详细使用方法。 另外还提供了WinSock的详细开发步骤,以及如何响应网络超时,网络断开的事件方法以及在VC,VB调用该
控件
的方法。 一、
MFC
ActiveX
控件
开发步骤(VC 6.0): New->Projects->
MFC
ActiveX
ControlWizard,然后输入
MFC
WinSock工程名。如下图: 图一 创建工程 一路狂按Next,直至Finsh出现,再按下OK,如下图: 图二 创建完成 二、架设Socket环境: 首先在StdAfx.h文件
中
加入下面这句代码: #include
//
MFC
socket extensions 打开
MFC
WinSock.cpp文件,添加代码,看起来如下: //////////////////////////////////////////////////////////////////////////// // C
MFC
WinSockApp::InitInstance - DLL initialization BOOL C
MFC
WinSockApp::InitInstance() { BOOL bInit = COleControlModule::InitInstance(); if (bInit) { // TODO: Add your own module initialization code here. if (!AfxSocketInit()) { AfxMessageBox("无法初始化Socket,请检查!"); return FALSE; } WSADATA wsaData; WORD wVersion = MAKEWORD(1, 1);//设定为Winsock 1.1版 int errCode; errCode = WSAStartup(wVersion, &wsaData);//启动Socket服务 if (errCode) { AfxMessageBox("无法找到可以使用的 WSOCK32.DLL"); return FALSE; } } return bInit; } //////////////////////////////////////////////////////////////////////////// // C
MFC
WinSockApp::ExitInstance - DLL termination int C
MFC
WinSockApp::ExitInstance() { // TODO: Add your own module termination code here. WSACleanup();//结束网络服务 return COleControlModule::ExitInstance(); } 三,提供
控件
接口和事件 在
MFC
WinSockCtl.cpp加入如下代码: #ifndef WM_MYWINSOCK #define WM_MYWINSOCK WM_USER+1888 #endif View->ClassWizard->Automation->Add Method…如下图: 图三 创建接口 这个时候,我们为这个
控件
添加了一个Connect()的接口,出于通用性,安全性和扩展性的考虑,我们采用了VARIANT
类
型的参数, 很多人可能都不太了解该
类
型,又或者有接触过,但被吓怕了,那么我们来看清它的本来面目: struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; union { LONG lVal; BYTE bVal; SHORT iVal; FLOAT fltVal; DOUBLE dblVal; VARIANT_BOOL boolVal; _VARIANT_BOOL bool; SCODE scode; CY cyVal; DATE date; BSTR bstrVal; IUnknown __RPC_FAR *punkVal; IDispatch __RPC_FAR *pdispVal; SAFEARRAY __RPC_FAR *parray; BYTE __RPC_FAR *pbVal; SHORT __RPC_FAR *piVal; LONG __RPC_FAR *plVal; FLOAT __RPC_FAR *pfltVal; DOUBLE __RPC_FAR *pdblVal; VARIANT_BOOL __RPC_FAR *pboolVal; _VARIANT_BOOL __RPC_FAR *pbool; SCODE __RPC_FAR *pscode; CY __RPC_FAR *pcyVal; DATE __RPC_FAR *pdate; BSTR __RPC_FAR *pbstrVal; IUnknown __RPC_FAR *__RPC_FAR *ppunkVal; IDispatch __RPC_FAR *__RPC_FAR *ppdispVal; SAFEARRAY __RPC_FAR *__RPC_FAR *pparray; VARIANT __RPC_FAR *pvarVal; PVOID byref; CHAR cVal; USHORT uiVal; ULONG ulVal; INT intVal; UINT uintVal; DECIMAL __RPC_FAR *pdecVal; CHAR __RPC_FAR *pcVal; USHORT __RPC_FAR *puiVal; ULONG __RPC_FAR *pulVal; INT __RPC_FAR *pintVal; UINT __RPC_FAR *puintVal; struct __tagBRECORD { PVOID pvRecord; IRecordInfo __RPC_FAR *pRecInfo; } __VARIANT_NAME_4; } __VARIANT_NAME_3; } __VARIANT_NAME_2; DECIMAL decVal; } __VARIANT_NAME_1; }; 它先是一个结构体,里面有一个重要成员VARTYPE vt;vt即是指明当前的数据
类
型,比如整型或者字符型,当指明vt后, 后面看到各种变量
类
型包括在一个联合体当
中
,也就是说指明vt后,你只能使用对应的其
中
之一变量
类
型。看着这众多的各种不同
类
型变量集
中
在一起,确实让人吓了一跳,但细细看来,大多数变量跟我们平时的用法相似。值得一提的是SAFEARRAY __RPC_FAR *parray; 也许有很多人还
没有
接触过SAFEARRAY
类
型的变量,SAFEARRAY实际上也是一个结构,大家可以参考MSDN,我也将在后面介绍它的具体使用方法。 用同样的方法创建DisConnect()接口 创建两个事件,FireCloseWinsock()响应网络断开事件,FireRecvSockEvent()响应网络有数据到达的事件。创建方法如下图: 图四 创建事件 重载
控件
消息处理函数WindowProc(),在View->ClassWizard
中
打开
类
向导
,在消息映射
中
找到WindowProc,如下图: 图五 重载WindowProc() 四、编写代码 编写VariantToLong()转换函数,该函数代码如下: //
类
型转换,将VARIANT
类
型转换成Long
类
型 long C
MFC
WinSockCtrl::VariantToLong(const VARIANT &var) { long r; switch(var.vt) { case VT_UI2://USHORT r = var.uiVal; break; case VT_UI4://ULONG r = var.ulVal; break; case VT_INT://INT r = var.intVal; break; case VT_UINT://UINT r = var.uintVal; break; case VT_I4://LONG r = var.lVal; break; case VT_UI1://BYTE r = var.bVal; break; case VT_I2://SHORT r = var.iVal; break; case VT_R4://FLOAT r = (long)var.fltVal; break; case VT_R8://DOUBLE r = (long)var.dblVal; break; default: r = -1;//无法转换该值 break; } return r; } 大家可以看到,该函数将最基本的若干
中
数据
类
型转换成了long
类
型,但VARIANT决不是个简单的谱,我将在后面继续揭开它的神秘面纱. 编写我们刚才的接口Connect(),代码代码如下: 在
MFC
WinSockCtrl.h
中
加入 SOCKET OnlySock;//建立的唯一Socket,不允许重复建立多个 bool isOnlyConnect;//是否建立了连接 然后再编写Connect(),看起来如下: BOOL C
MFC
WinSockCtrl::Connect(const VARIANT FAR& RemoteHost, const VARIANT FAR& RemotePort) { // TODO: Add your dispatch handler code here if(isOnlyConnect)//该连接已建立,还
没有
断开 return FALSE; CString IPAddress; int Port;//转换成整型的端口 switch(RemoteHost.vt) { case VT_BSTR://字符串型 IPAddress = CString(RemoteHost.bstrVal); break; case VT_BYREF|VT_I1://CHAR * IPAddress.Format("%s",RemoteHost.pcVal);//RemoteHost.pbstrVal); break; default: IPAddress = ""; return FALSE; } Port = VariantToLong(RemotePort);//我们编写的一个VARIANT转换成long
类
型的函数 if(Port<=0) return FALSE; _TCHAR *ip = 0; struct hostent *host = 0; struct sockaddr_in addr; ULONG dotIP = inet_addr(IPAddress); OnlySock = socket(AF_INET, SOCK_STREAM, 0); // 判断是否为点IP地址格式 if (OnlySock == INVALID_SOCKET) { shutdown(OnlySock, 0x02); closesocket(OnlySock);//释放占有的SOCK资源 return FALSE; } memset(&addr, 0, sizeof(struct sockaddr_in)); // 设定 SOCKADDR_IN 结构的内容 // 如果通讯协议是选择IP Protocol,那此值固定为AF_INET // AF_INET 与 PF_INET 这两个常量值相同 addr.sin_family = AF_INET; addr.sin_port = htons(Port); addr.sin_addr.S_un.S_addr = dotIP; if (dotIP == INADDR_NONE) { host = gethostbyname(IPAddress); if (!host) { shutdown(OnlySock, 0x02); closesocket(OnlySock);//释放占有的SOCK资源 return FALSE; }; ip = inet_ntoa(*(struct in_addr*)(*host->h_addr_list)); addr.sin_addr.S_un.S_addr = inet_addr(ip); } //开始连线 if (connect(OnlySock, (LPSOCKADDR)&addr, sizeof(SOCKADDR))) { shutdown(OnlySock, 0x02); closesocket(OnlySock);//释放占有的SOCK资源 return FALSE; } int iError = WSAAsyncSelect(OnlySock, m_hWnd,WM_MYWINSOCK, FD_READ|FD_CLOSE); //只对网络断开和数据到达通知感兴趣 if(iError == SOCKET_ERROR)//无法绑定Winsock的事件通知 { shutdown(OnlySock, 0x02); closesocket(OnlySock);//释放占有的SOCK资源 return FALSE; } isOnlyConnect = true; return TRUE; } 有必要提一下WSAAsyncSelect(),这里接收网络数据到达和断开的两个消息,我们收到WM_MYWINSOCK消息时将处理该消息并作为事件传送给调用者. 第二个参数,窗口句柄,我们传送了m_hWnd,这是因为
MFC
ActiveX
也属于一个窗口,并且是可见的,因此可以成功。 编写WindowProc(),代码看起来如下: LRESULT C
MFC
WinSockCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class switch(message) { case WM_MYWINSOCK://响应自定义的消息 switch(WSAGETSELECTEVENT(lParam)) { case FD_READ://有新数据到达 FireRecvSockEvent(); break; case FD_CLOSE://对方已断掉当前连接 FireCloseWinsock(); break; } break; default: break; } return COleControl::WindowProc(message, wParam, lParam); } 本部分结束语: 好了,现在一个可以运行的
控件
已经完成,里面提供有Connect()和DisConnect()接口,和RecvSockEvent()及CloseWinsock()事件。以及WinSock的使用方法。 在下一部分(高级篇)将讲解两个重要接口SendData()和GetData(),下期内容如下: long SendData(const VARIANT FAR& Data, const VARIANT FAR& DataType,const VARIANT FAR& DataLength, const VARIANT FAR& TimeOut) long GetData(VARIANT FAR* Data, const VARIANT FAR& DataType, const VARIANT FAR& DataMaxLength, const VARIANT FAR& TimeOut) VARIANT和SAFEARRAY的复杂用法。
控件
开发出来后在VC和VB环境下的使用方法。 声明: 部分资料来源于网络,本文所用的所有源代码仅供非商业用途,并请保留原版权,否则后果自负! 欢迎大家拍砖,或指正不足的地方,一起探导更好的方法。 欢迎访问www.59186618.com,感谢您的支持!
从Access数据库零基础入门到
中
文编程第1部
Access是office办公套件
中
的一个极为重要的组成部分,现在它已经成为最流行的桌面数据库管理系统。本课程为Access数据库知识系列课程第1部,课程目标:结合实例讲解,零基础快速学习Access数据库。本课程章节计划表:第一章:Access数据库概述1、Access数据库概述第二章:Access数据库安装文件下载及安装1、Access数据库安装文件下载及安装第三章:创建数据库表1、 利用表
向导
创建表2、 利用表设计器创建表3、 学习技巧第四章:字段的基本操作1、 添加、删除和更改移动字段2、 字段的属性及作用3、 主关键字和索引第五章:创建表之间的关系1、 关系
类
型2、 创建和使用表关系第六章:创建子数据表1、 创建当前表的子数据表2、 数据表视图的显示外观第七章:为数据库加密1、 设置数据库密码2、 设置数据库安全机制3、 两种加密方式优劣分析第八章:创建查询1、 查询概述、查询
类
型2、 使用
向导
创建查询3、 使用设计视图创建查询4、 查询的基本操作及查询优化的规则第九章:查询编程、生成查询语句的捷径1、 初步了解
中
文编程2、 生成查询语句的捷径第十章:Access数据库总结1、 Access数据库总结
MFC
Windows程序设计(第2版修订版)--源代码
此代码是随书光盘拷贝。 此版本是网上最详细的书签版本,也是最清晰的版本。
MFC
Windows程序设计(第2版修订版) (Programming Windows with
MFC
, 2nd Edition) 基本信息 作者: (美)Jeff Prosise [作译者介绍] 译者: 北京博彦科技发展有限责任公司 出版社:清华大学出版社 ISBN:9787302150428 上架时间:2007-5-22 出版日期:2007 年5月 开本:16开 页码:1166 版次:1-1 内容简介 《
mfc
windows程序设计(第2版)》是对其极为经典的第1版的全面更新,本书不仅扩展了已被认为是权威的关于microsoft用于windows api的功能强大的c++
类
库的阐述,还新增了有关com、ole和
activex
的内容。本书的作者,jeff prosise,用其无与伦比的技巧向读者讲述了
mfc
程序设计
中
的基本概念和主要技术——再次阐释了在32位windows平台上进行了快速的面向对象开发的完美方法。 本书涵盖了以下专题: 事件驱动程序设计和mpc的基础知识 文档/视图体系结构 位图、调色板和区域 多线程和线程同步
mfc
与组件对象模型(com)
activex
控件
《
mfc
windows程序设计(第2版)》见解深刻,并附带有辅助学习的资源——包括在随附的cd-rom
中
提供了大量代码实例。 要理解如何利用
mfc
库
中
提供的成千上万的预编译、预测试的代码的优点,本书——及其作者——将是您独一无二的选择。 作译者 本书提供作译者介绍 Jeff Prosise是一位作者、教员和讲师,他以Windows编程和教授别人如何进行Windows为生。作为一位在Windows程序设计、
MFC
和COM领域世界知名的权威,他还是《PC Magazinge》和《Microsoft Systems Journal》杂志的组稿编辑。 目录 鸣谢 序言 第ⅰ部分 windows和
mfc
基础 第1章 hello,
mfc
第2章 在窗口
中
绘图 第3章 鼠标和键盘 第4章 菜单 第5章
mfc
集合数 第6章 文件i/o和串行化 第7章
控件
第8章 对话框和属性表 第ⅱ部分 文档/视图体系结构 第9章 文档、视图和单文档界面 第10章 滚动视图、html视图以及其他视图
类
型 第11章 多文档和多视图 第12章 工具栏、状态栏和组合栏 第13章 打印和打印预览 第ⅲ部分 高级篇 第14章 计时器和空闲处理 第15章 位图、调色板以及区域 . 第16章 公用
控件
第17章 线程和线程同步化 第ⅳ部分 com,ole和
activex
第18章
mfc
和组件对象模型 第19章 剪贴板和ole拖放 第20章 automation 第21章
activex
控件
序言 像我的许多同行一样,我学习Windows编程是从读Petzold的书《Windows程序设计》——一本所有Windows程序员都使用的Windows编程圣经——开始的。在刚刚成为一名
MFC
程序员时,那天我冲进书店,想买一本能够与ProgrammingWindows相媲美的
MFC
编程书籍,但是却
没有
结果。于是我决定自己写一本这样的书。它正是您手
中
所拿到的这本书,也正是当初我在初学
MFC
时,希望拥有的那本书。. 正如您所知,
MFC
是用于Windows编程的Microsoft C++
类
库。本书并不是一本关于C++的书,而是一本关于使用
MFC
而不是Windows APl,进行32位Windows应用程序编程,以访问操作系统的基本特性和服务的书。它原本为以下两种编程人员所写: 曰打算学习
MFC
的WindowsAPl程序员 曰未进行过Windows编程的程序员 无论您属于哪种人,我假设您已经了解C++,而且熟悉C++语法,如派生
类
及虚函数。如果是这样的话,您已在征肠
MFC
编程之山的历险
中
迈出了坚实的第一步。 即使是有经验的Windo;。程序员在初读
MFC
代码时也会感到迷惑。一部分是由于VisualC++代码生成
向导
所生成的代码所致,另一个原因是因为无数行代码隐藏在
MFC
类
库
中
。这正是本书使用特殊的方法来写
MFC
的缘由。本书从让您亲自手写代码开始(不用
向导
),使用
MFC
l.0的应用程序结构风格,也就是说,既不用文档也不用视图。只有在您掌:握了上述的基础知识,初步认识了简单的
MFC
类
库如CWnd和CWinApp之后,我才开始介;绍
向导
并教您使用
MFC
的文档视图结构的方法。您将逐渐理解Windows的关键组件及它的消息驱动机制,如图形设备接口(GDl)。我相信用这种方法可以使
MFC
的学习变得生动有趣而不是令人气馁。我认为一旦您认真地学完这本书,然后再站在老练的Windows程序员的角度来回顾学习过程
中
的甜酸苦辣,您将同意我的观点。 本书分为4个部分。第1部分,介绍了Windows及
MFC
编程的主要原则,以一个示例程序"Hello,
MFC
"开始,然后逐一简要讲解菜单、
控件
、对话框以及其他用于组建应用程序的模块。第2部分,在第1部分的基础之上,对文档视图结构做详细讲解,特别是第9、10、11章,揭示了实现文档视图的神奇之处,不仅介绍了如何编写简单的文档视图程序,而且教您一些高级功能,如打印预览和拆分窗口视图。第3部分涵盖了一些Windows和
MFC
的更鬲级的功能,如颜色选项板、位图句柄及多线程程序。在第4部分,您将了解到
MFC
如何包容COM、OLE和
ActiveX
,如何编写支持COM的组件及应用程序。在读完第21章之后,您将更加精通使用
MFC
进行Windows 32位编程的技术。您也将拥有丰富的源代码用于您的第一 第2版的新特点 读过本书第1版的朋友将会注意到第2版的两个相当明显的变化。首先,本版包括7个新章节,1章用于讲解
MFC
视图
类
,1章涵盖
MFC
集合
类
;1章介绍
MFC
文件I/0和串行化机制,4章讨论了
MFC
和COM的关系。
MFC
不是
类
似活动模板库(ATL)的通用COM框架,但是
MFC
使编写某些COM程序更容易,使编写
ActiveX
控件
的过程更简单,而且它使编写自动化(Automation)服务器程序(使用COM技术来供脚本客户调用的程序)变成了二件轻而易举的事。.. 第2版的主要变化是关于
向导
的知识。在第1版
中
并
没有
提到
向导
。在第2版
中
1-3章使用手写的示例程序,但到了第4章就使用AppWizard和ClassWizard来生成代码。这样做的原因是,我始终认为代码生成
向导
会影响
MFC
的学习,它只应由老练的程序员来使用。但我也逐渐认识到,实际上,有很多
MFC
程序员在使用
MFC
向导
来做某些工作,如编写
ActiveX
控件
,在此时不用
向导
是很不明智的。经过深思熟虑之后,我决定加上这些内容。 尽管这些新内容是关于
向导
的使用,然而它现在不是,以后也不会是一本仅仅介绍如何在
向导
中
单击按钮的书。在介绍了一个像如何用ClassWizard编写消息句柄之
类
的基本技巧之后,我在给出代码时,将不再赘述这些内容。当然,。
向导
永远不能超越您的能力去做任何事,因此键人所有手写的代码是完全可行的。 在讲述
MFC
编程的书
中
使用
向导
的缺点是,
向导
生成的程序不适合发表。本书的第一版印刷了每个程序文件的代码。本版书
没有
这样做,而只是包括了“相关”的源代码文件,其他的都放在CD-ROM
中
,为什么?因为印刷这些代码会使本书增加一倍的厚度而
没有
相应增加内涵。其
中
一些代码是由Visual C++6.0的
MFC
向导
产生的,甚至
没有
被编译(详细内容请参见第4章)。我并不为本书
中
向导
生成的代码而得意,因为其
中
充斥着随意生成的空行、不连贯的注释和无用的函数。对那些以编写清晰易读的示例源代码为骄傲的作者来说,
向导
生成的东西是一剂苦药。 然而,
向导
代表了Windows编程的新法则,它们是你、我及所有人都必须习惯的重要事物。但令人遗憾的是,VisualC++开发小组
没有
给我们一个真正的
向导
,而只是一个冒充
向导
的玩具。在他们能够做到以前,我们得习惯现有的
向导
。 CD.ROM
中
的内容 本书随附的CD-ROM包括书
中
全部示例程序的源代码,它们都在Visual C十十6.0和
MFC
6.0环境下编写、编译而成,并在Win32平台上测试通过。如果
没有
特别说明它们都与Windows 98、WindowsNT4.0及Windows 2000兼容,其
中
大部分也与Windows 95及WindowsNT 3.51兼容。 您可用CD—ROM的根目录下的安装程序来将CD-ROM
中
,的内容复制到硬盘里,也可只复制其
中
\Code目录
中
的代码。我们在此目录
中
为书
中
每章各建了一个子目录——Chap01、Chap02,依次
类
推。在这些子目录
中
存放示例程序。每个程序的源代码文件都有一个相应的发布版本的EXE文件,以及您可使用Visual C++的Open Workspace命令来打开的workspace(DSW)文件。 JeffProsise 1999年3月12日...
MFC
教程入门知识全集.rar
说明:本书稿为张孝祥、袁龙友两位老师在2000 年依据张孝祥的vc 讲课记录整理,由于时间关系,仅仅是写成了草稿,欢迎大家使用! 第1 章 掌握C 1.1
类
的定义与应用 1.1.1 结构的定义 1.1.2
类
的定义 1.1.2.1
类
与结构 1.1.2.2
类
的使用 (例子代码EX01-00) 1.2 函数的重载 1.2.1 重载参数个数不同的函数 (例子代码EX01-01) 1.2.2 重载参数数据
类
型不同的函数 (例子代码EX01-02) 1.3 构造函数与析构函数 1.3.1 构造函数 1.3.2 析构函数 (图1,
没有
)(图2,
没有
) 1.4 this 指针的引用 1.5
类
的继承与protected 访问修饰符 1.5.1 单一继承 (例子代码EX01-03) (图x,
没有
) 1.5.2 多重继承 1.6 虚函数与多态性 1.7
类
的书写规范 1.8 小结 第2 章 Windows 程序内部运行原理 2.1 Windows 应用程序,操作系统,计算机硬件之间的相互关系 2.1.1 关于API (图1,
没有
) 2.1.2 关于消息及消息队列 (图1、图2
没有
) 2.2 什么是句柄 2.3 谈谈WinMain 函数 (例子代码EX02-00) 2.3.1 WinMain 函数的定义及功能 2.3.2 窗口及其生成 2.3.2.1 如何设计一个窗口
类
——步骤1 2.3.2.2 注册设计好的窗口
类
——步骤2 2.3.2.3 创建窗口——步骤3 2.3.2.4 显示创建的窗口——步骤4 2.3.3 消息循环 2.3.4 完成回调函数 2.4 程序编写操作步骤与实验 2.5 小结 第3 章 VC 集成开发环境介绍 3.1 Visual C 开发环境 3.1.1 工作区窗格 3.1.2 输出窗格 3.1.3 编辑区 3.1.4 菜单栏、工具栏、状态栏 3.2 系统菜单功能介绍 3.2.1 File 菜单 3.2.2 Edit 菜单 3.2.3 View 菜单 3.2.4 Insert 菜单 3.2.5 Project 菜单 3.2.6 Build 菜单 3.2.6 Tools 菜单 3.2.7 Window 菜单 3.2.8 Help 菜单 3.3 Visual C 重要工具介绍 3.3.1 C/C 编译器 3.3.2 资源编辑器 3.3.3 资源编译器 3.3.4 链接器和调试器 3.3.5 AppWizard 和ClassWizard 3.3.6 资源浏览器 3.3.7 Microsoft 活动模板库、仓库 3.4 小结 第4 章
MFC
应用程序框架剖析 4.1 什么是
MFC
以及
MFC
的特点 (例子代码EX04-00) 4.2
MFC
应用程序框架 (例子代码EX04-01) 4.3 应用程序框架说明 4.4 文档-视图体系结构 4.4.1 文档-视图相互作用的函数 4.4.2 单文档-视图应用程序结构 4.4.2 多文档-视图应用程序结构 4.5
MFC
消息映射机制 4.5.1 消息的种
类
4.5.2 应用程序的Run 函数 4.5.3 消息映射表 4.5.4 如何添加消息映射 4.6 ClssWizard 的使用 4.6.1 ClssWizard 概貌 4.6.2 如何添加消息处理函数 4.6.3 如何添加成员变量 4.6.4 如何添加一个新
类
第5 章 图形与文本 5.1 理解图形设备接口 5.2 设备描述表 5.2.1 什么是设备描述表 5.2.2
MFC
中
的设备描述表
类
5.2.3 获取设备描述表 5.3 Windows 的GDI 对象 5.4 GDI 对象的创建 5.4.1 自定义画刷(CBrush) 5.4.2 自定义画笔(CPen) 5.4.3 自定义字体(CFont) 5.5 GDI 对象的使用及示例 5.5.1 画笔的使用 5.5.1.1 在
MFC
程序
中
画线 5.5.1.2 在Windows Application 程序
中
画线 5.5.1.3 实现橡皮筋功能 5.5.2 画刷的使用 5.5.2.1 带颜色的画刷的使用 5.5.2.2 带位图的画刷的使用 5.5.3 字体的使用 5.5.3.1 一个简单的文字处理程序 5.5.3.2 模拟卡拉OK 程序 5.5.3.3 剪切区和路径层 第六章 菜单、工具栏和状态栏 6.1 菜单 6.1.1 菜单介绍 6.1.2 创建一个菜单 6.1.2.1 添加一个菜单资源 6.1.2.2 利用菜单编辑器编辑菜单资源 6.1.2.3 将菜单加入到应用程序
中
6.1.2.4 给菜单项添加COMMAND 消息处理 6.1.2.5 给菜单项添加UPDATE_COMMAND_UI 消息处理 6.1.2.6 一个简单的绘图程序 6.1.3 在应用程序
中
控制菜单 6.1.3.1 在应用程序
中
取得菜单 6.1.3.2 在应用程序
中
修改菜单的状态 6.1.3.3 在应用程序
中
添加、删除、插入菜单或菜单项 6.1.3.4 一个简易的电话本程序 6.1.4 创建快捷方式菜单 6.2 工具栏 6.2.1 工具栏介绍 6.2.1.1 熟悉CToolBar
类
6.2.1.2 AppWizard 是如何创建工具栏 6.2.1.3 利用工具栏编辑器设计工具栏按钮 6.2.2 新建一个工具栏 6.2.3 显示/隐藏工具栏 6.3 状态栏 6.3.1 状态栏介绍 6.3.1.1 熟悉CStatusBar
类
6.3.1.2 AppWizard 是如何创建状态栏 6.3.2 修改状态栏 6.3.2.1 指示器数组 6.3.2.2 修改状态栏窗格 6.3.3 在状态栏上显示鼠标坐标、时钟和进度条 6.3.3.1 在状态栏上显示鼠标坐标 6.3.3.2 在状态栏上显示时钟 6.3.3.3 在状态栏上显示进度条 第七章 对话框和
控件
7.1 对话框及
控件
的介绍 7.1.1 常用
控件
介绍 7.1.2 对话框介绍 7.1.2.1 对话框的组成 7.1.2.2 对话框的种
类
7.1.2.3 使用对话框编辑器设计对话框 7.1.3 创建一个对话框 7.1.3.2 创建非模态对话框 7.1.3.3 对话框的数据交换机制 7.1.3.4 创建模态对话框 7.1.4 模态对话框和非模态对话框的区别 7.1.5 按钮逃跑小程序 7.2 属性页和
向导
对话框 7.2.1 创建属性页对话框 7.2.1 创建
向导
对话框 7.3 公用对话框 7.3.1 增加设置对话框来完善绘图程序 7.3.2 颜色对话框的使用 7.3.3 字体对话框的使用 7.3.4 控制
控件
颜色做漂亮界面 第8 章 文档序列化 8.1 序列化 8.1.1 CArchive
类
和Serialize 函数 8.1.2 使自己的
类
支持序列化 8.1.3 实例:保存和显示图形 8.2 CFile
类
8.2.1 CFile
类
的构造函数 8.2.2 打开文件 8.2.3 读写数据 8.2.4 关闭文件 8.3 文件I/O 处理 8.3.1 利用
MFC
类
来实现 8.3.2 利用C 函数来实现 8.3.3 利用C 函数来实现 8.3.4 利用API 函数来实现 8.3.5 创建保存、打开对话框 8.4 注册表操作 8.4.1 什么是注册表 8.4.2 注册表结构 8.4.3 修改注册表 第9 章 修改框架程序的显示效果 9.1 修改Windows 应用程序外观样式 9.1.1 在框架
类
中
修改程序外观 9.1.2 在视图
类
中
修改程序外观 9.2 制作动画图标 9.3 将图片作为窗口显示的背景 第10 章 网络编程 10.1 计算机网络的基本概念 10.1.1 计算机网络的分
类
10.1.2 网络拓扑结构 10.2 网络体系结构和网络协议 10.2.1 ISO/OSI 参考模型 10.2.2 TCP/IP 参考模型 10.2.3 TCP/IP 协议 10.2.3.1 协议概述 10.2.3.2 TCP/IP 协议层次结构及各种协议介绍 10.2.3.3 IP 地址 10.2.3.4 端口号 10.2.4 专业术语解释 10.3 Socket 套接字 10.3.1 Socket 介绍 10.3.2 关于协议族和地址族 10.3.3 使用Socket 10.3.3.1 创建Socket 10.3.3.2 指定本地地址及端口号 10.3.3.3 建立连接 10.3.3.4 监听连接 10.3.3.5 发送数据 10.3.3.6 接收数据 10.3.3.7 关闭套接字 10.3.4 套接字一般调用过程 10.4 WinSock 编程机制 10.4.1 认识Windows Socket 10.4.2 Windows Sockets 库函数介绍 10.4.2.1 Berkeley socket 函数 10.4.2.2 数据库函数 10.4.2.3 Windows 专有扩展函数 10.5 WinSock 编程实例 10.5.1 实例一:面向连接服务的socket 调用 10.5.2 实例二:面向非连接服务的socket 调用 10.5.3 实例三:基于字符界面的聊天程序 第11 章 线程间的同步 11.1 进程和线程的概念 11.2 Win32 的线程 11.2.1 线程的创建 11.2.2 线程的终止 11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3
MFC
的线程处理 11.3.1 创建工作者线程 11.3.2 创建用户界面线程 11.4 线程同步 11.4.1 为什么要同步 11.4.2 等待函数 11.4.3 同步对象 11.4.3.1 关键代码段 11.4.3.2 互斥对象 11.4.3.3 信标对象 11.4.3.4 事件对象 11.4.4 如何选择同步对象 第12 章 进程间的通讯 12.1 进程控制 12.1.1 进程的创建 12.1.2 进程的终止 12.2 进程间通讯 12.2.1 剪贴板通讯方式 12.2.2 邮槽通讯方式 12.2.3 管道通讯方式 12.2.3.1 命名管道通讯 12.2.3.2 匿名管道通讯 第14 章
ActiveX
技术 14.1
ActiveX
简介 14.2
ActiveX
控件
和普通Windows
控件
14.2.1
ActiveX
控件
和普通Windows
控件
的相同点 14.2.2
ActiveX
控件
和普通Windows
控件
的相同点 14.3
ActiveX
控件
的属性、方法和事件 14.3.1
ActiveX
控件
的属性 14.3.2
ActiveX
控件
的方法 14.3.3
ActiveX
控件
的事件 14.4 创建
ActiveX
控件
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章