
Windows技术/MFC/COM/ATL/GDI+/API
huangxy10
这个作者很懒,什么都没留下…
展开
-
Socket模型详解(转)
两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较 两种I/O模式1、 两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Wi转载 2013-12-05 18:53:34 · 1182 阅读 · 0 评论 -
在VS2008中定制Visual C++项目向导
本文事实上是参考文献[1]的一篇翻译,但有些我不认为重要的地方省略了。本文虽然是针对AddProject向导展开的,但同样适用于AddItem和AddClass向导。另外,对VSExpress版本和其它VS版本,这些向导文件的存放位置有所不同,但不难找到。对于JS代码的编写,很多时候需要参考文献[2]和[3]的帮助,另外,一个很好的方式是去阅读现有向导的JS代码,差不多都能找到想要的功能。转载 2013-07-19 09:22:52 · 1586 阅读 · 0 评论 -
两种方法查看MFC源代码
本文转自:http://blog.youkuaiyun.com/akof1314/article/details/6084683第一种--使用mfc.bsc源浏览器文件 mfc.bsc是可以查看MFC源代码的文件,其位置在MFC源代码文件夹下,Visual Studio版本不一样的话,位置也不一样。vc6.0位置:C:/Program Files/Microsoft Visual S转载 2013-07-17 15:14:45 · 1230 阅读 · 0 评论 -
用ATL创建COM组件(详细分析了ATL创建的各种文件的意义,看完之后ATL就入门了)
转载自:http://www.cppblog.com/ice197983/articles/4178.html其他不错的资源:http://technet.microsoft.com/zh-cn/sysinternals/cc451355(v=vs.71)用ATL创建COM组件一、创建一个模型(工程) MyProj。二、给模型(工程)增加一个组件 M转载 2013-05-14 04:32:02 · 6542 阅读 · 0 评论 -
vc和MFC的详细历史
VisualC++ 1.0:C++编译器的终结者 唯技术”思想有时能使陷入一种困境,作为一种编程工具(也可以认为是一种技术),Visual C++经历了许多风波和变革,但纵观目前几乎所以有书籍和文章,很少对这种技术进行“跳出圈外”的思考,这也使我写这篇文章感到无源的苦恼。细想之后,也颇为感慨,愿借此文以激众家之思! Visual C++的发展与C/C++语言、Windows的历程转载 2013-01-12 12:43:14 · 8887 阅读 · 2 评论 -
CFileDialog的用法简介
CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWR转载 2013-01-11 02:38:07 · 1289 阅读 · 0 评论 -
MFC下CSocket编程详解
MFC下CSocket编程详解: 1. 常用的函数和注意事项(详细的函数接口说明请查看MSDN): CSocket::Create 初始化(一般写服务器程序都不要用为好,用下面的 CSocket::Socket 初始化) CSocket::Socket初始化 CSocket::SetSockOpt 设置socket选项 CSocket::Bind 绑定地址转载 2013-01-10 15:34:23 · 1050 阅读 · 0 评论 -
CAsyncSocket
http://www.cnblogs.com/wqj1212/archive/2009/03/18/1415786.html一、 一些网络的基本概念1. 同步:指的是发送方不等接收方响应,便接着发下个数据包的通信方式;2. 异步:指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式3. 阻塞:指调用某函转载 2013-01-10 15:23:30 · 2480 阅读 · 0 评论 -
MFC疑难注解:CAsyncSocket及CSocket
MFC疑难注解:CAsyncSocket及CSocketMFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前者是异步通信,后者是同转载 2013-01-10 15:03:19 · 979 阅读 · 0 评论 -
MFC socket编程
http://xgwdy06.blog.163.com/blog/static/190718352201232634119954/ 原文地址:http://apps.hi.baidu.com/share/detail/3410191---- 随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要。由于C++语言对底层操作的优越性,许多文章都曾经介绍过用VC++进行 Soc转载 2013-01-10 14:34:25 · 9267 阅读 · 1 评论 -
VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
http://www.jizhuomi.com/software/232.html原文有图片。 前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器。定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后讲解。 定时器简介 定时器,可以帮助开发转载 2013-01-10 14:08:47 · 3279 阅读 · 0 评论 -
MFC定时器的应用
在计算机程序设计领域,有很多功能是周期性执行的, 如:数据采集程序,系统时间的显示等。 数据采集:周期性地获得现场的物理量信息系统时间的显示:周期性地获得系统时间,并显示出来。 完成上述这些功能的代码都是按照一定的时间间隔周期性地执行的,这是就需要用到一个新的组件——定时器(TIMER)。 定时器是Windows系统的资转载 2013-01-10 14:09:27 · 1016 阅读 · 0 评论 -
ATOM全局原子
一、什么叫原子表和原子函数? Win32系统中,为了实现信息共享,系统维护了一张全局原子表,用于保存字符串与之对应的标志符的组合。应用程序在原子表中可以放置字符串,并接收一个16位整数值(叫做原子,即atom),它可以用来提取该字符串.放在原子表中的字符串叫做原子的名字;二、关于原子表 系统提供许多原子表.每个原子表用于不同的目的;例如,动态数据转载 2013-07-18 15:51:44 · 2656 阅读 · 0 评论 -
USB枚举过程
USB枚举过程 USB Enumeration USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见下图(最顶端为主机的Root Hub):USB总线拓扑结构(转载 2013-07-24 10:06:29 · 921 阅读 · 0 评论 -
PeekMessage与GetMessage区别
原文地址:http://www.cnblogs.com/faceang/archive/2010/05/25/1743757.html PeekMessage与GetMessage的对比相同点: PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中 的消息派发出去。不同点: 无论应转载 2013-12-04 15:41:37 · 929 阅读 · 0 评论 -
VC/MFC之ListCtrl控件使用经验总结(转)
以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn--------------------------------------------------------------------------------转载 2013-12-07 11:19:21 · 1822 阅读 · 0 评论 -
[Windows驱动开发](二)Windows驱动程序环境搭配(VS2010 + WDK + VirtualDDK + VMware)
方法一:以前一直都是用 VS2008 + DDKWizard + WinDbg 来进行驱动程序的开发调试的,使用 DDKWizard 来搭配调试环境呢,在 VS2008 下也还算方便,因为不需要自己去设置一些什么包含文件啊,源代码路径啊之类的就可以直接编译驱动程序源码,安装好 DDKWizard 后,在 VS2008 中就会自动出现一个开发驱动程序的项目转载 2013-11-10 23:19:03 · 5796 阅读 · 0 评论 -
WSAGetLastError()部分常见返回值
10004 —WSAEINTR函数调用中断。该错误表明由于对W S A C a n c e l B l o c k i n g C a l l的调用,造成了一次调用被强行中断。10009 —WSAEBADF文件句柄错误。该错误表明提供的文件句柄无效。在Microsoft Windows CE 下,s o c k e t函数可能返回这个错误,表明共享串口处于“忙”状态。转载 2013-11-22 20:23:18 · 2083 阅读 · 0 评论 -
TCP 完成端口服务器构建
在vs2008中编译通过,vs2010应该也没有问题。使用静态MFC dll。其他配置保持默认即可。可能需要设置/MTD运行时。可以实现向指定客户端ip发送信息(该客户端必须首先连接进服务器)从指定客户端ip中取出数据。我使用C++类进行了封装,对各种异常进行了处理。进行了较详细的注释,如果有函数不清楚,可以去msdn上查一查。原创 2013-11-23 14:06:52 · 3561 阅读 · 1 评论 -
实现UDP IOCP
http://h-lm.spaces.live.com/blog/cns!C523F565A10E3B66!824.entry2008/11/11实现UDP IOCP心得当前许多资料都是介绍TCP的IOCP的实现,UDP的较少。 1.很多人在讨论UDP是否需要IOCP。借http://jlbookworm.spaces.live.com/blog/cns转载 2013-11-04 14:53:23 · 6964 阅读 · 4 评论 -
【windows服务】windows服务与自启动程序的区别
在客户端服务器项目实践中,作为服务端必须保持程序的24小时不间断运行,需要做一个监控,当监控到该程序已关闭时则重新启动下。 有两种方法可以实现这个功能:第一是做windows服务,作为后台的系统服务监控程序的运行状态。第二是编写另外一个程序作为监控程序,通过添加计划任务,将监控程序设置为开机启动。网上讨论两者的区别很少,大概都是集中在监控程序有界面而window转载 2013-11-16 13:09:06 · 2824 阅读 · 0 评论 -
RPC远程过程调用实例详解(转)
1、创建IDL文件,定义接口。IDL文件可以由uuidgen.exe创建。首先找到系统中uuidgen.exe的位置,如:C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools。在此目录下运行命令"uuidgen/i /ohello.idl",即可在该位置生成一个IDL文件:hello.idl。文件内容如下:转载 2013-11-17 00:19:07 · 1546 阅读 · 0 评论 -
在VS2008中定制Visual C++项目向导
本文事实上是参考文献[1]的一篇翻译,但有些我不认为重要的地方省略了。本文虽然是针对AddProject向导展开的,但同样适用于AddItem和AddClass向导。另外,对VSExpress版本和其它VS版本,这些向导文件的存放位置有所不同,但不难找到。对于JS代码的编写,很多时候需要参考文献[2]和[3]的帮助,另外,一个很好的方式是去阅读现有向导的JS代码,差不多都能找到想要转载 2013-09-11 17:12:34 · 3339 阅读 · 0 评论 -
VC++ 自定义向导(如何生成,修改,调试自定义向导)
这是一篇关于C++中自定义向导非常好的文档。取自:http://msdn.microsoft.com/en-us/library/aa730846(v=vs.80).aspxInside Visual C++ WizardsShankar Vaidyanathan, Gabriel Esparza-Romero, Andras Tantos, Boris转载 2013-09-04 11:41:30 · 4009 阅读 · 0 评论 -
命令行的乱码以及编码的问题的解决方法
详细出处参考:http://www.jb51.net/os/windows/67767.html点评:本文告诉大家如何解决命令行的乱码以及编码的问题-解决命令行的乱码以及编码的问题 命令 chcp 功能: 显示或设置活动代码页编号 CHCP [nnn] nnn 指定代码页编号。 不加参数键入 CHCP 显示活动代码页编号。 nnn指定一已有的转载 2013-08-16 21:29:12 · 1462 阅读 · 0 评论 -
VC++程序员应当如何阅读ADO文档
VC++程序员应当如何阅读ADO文档 《ADO API参考》用VB的语法描述了ADO API的内容。但ADO程序员却使用着不同的编程语言,比如VB,VC++,VJ++。对此《ADO for VC++的语法索引》提供了符合VC++语法规范的详细描述,包括功能、参数、异常处理等等。ADO基于若干的COM借口实现,因此它的使用对于一个正进行COM编程的程序员而言更简单。比转载 2013-01-04 01:40:49 · 1055 阅读 · 0 评论 -
Activex、OLE、COM、OCX、DLL之间有什么区别?
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它转载 2013-01-03 13:23:09 · 1122 阅读 · 0 评论 -
VC Tab控件的用法
VC中的CTabCtrl用法与VB、Delphi的选项卡控件有很大的不同,每个属性页是用一个“窗体”(对话框)来实现,于是要为每个属性页对话框建类,还要关联、初始化„„实在麻烦得多。但是CTabCtrl可重用性比ActiveX的选项卡控件好,因为一个属性页可以被多个不同的选项卡对话框调用,就像MFC中很多属性选项卡有“General”这一选项页,可以被多个控件的属性页调用,作为“通用”的,有符合现转载 2012-05-23 13:01:59 · 881 阅读 · 0 评论 -
C++连接mysql数据库的两种方法
现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多。通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法。可以通过2种方法实现。第一种方法是利用ADO连接,第二种方法是利用mysql自己的api函数进行连接。 可以是C的API,也可以是C++的connector。本文介绍的是c的A转载 2012-05-22 11:22:15 · 868 阅读 · 0 评论 -
[MFC]选择目录对话框和选择文件对话框
在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法:选择目录对话框//选择目录按钮void CDcPackerDlg::OnBnClickedDecgen() { char szPath[MAX_PATH]; //存放选择的目录路径 CString str; ZeroMem转载 2012-05-21 11:07:34 · 4504 阅读 · 0 评论 -
Edit Control控件 编辑框 文本框
1, 如何修改Edit控件中的内容方法一: SetDialogItem( IDC_EDIT, "nihao" );方法二: 控件绑定CString对象m_Edit, m_Eidt="nihao";UpdateData( false );2, 如何自动滚动到最下方index = m_Edit.GetLineCount();//获得当前List控件一共多少行原创 2012-05-25 13:52:01 · 9880 阅读 · 0 评论 -
多线程编程之二——MFC中的多线程开发
五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程转载 2011-12-27 19:28:53 · 773 阅读 · 0 评论 -
多线程编程之四——线程的同步
八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能转载 2011-12-27 19:30:08 · 647 阅读 · 0 评论 -
多线程编程之三——线程间通讯
七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对转载 2011-12-27 19:29:35 · 613 阅读 · 0 评论 -
多线程编程之一——问题提出
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //转载 2011-12-27 19:28:05 · 943 阅读 · 0 评论 -
MFC实现选择文件夹的对话框
由于MFC自带的CFileDiag是只能选择文件的,无法定制只能选择文件夹的对话框。然后当你仅仅需要操作文件夹,批量操作文件时,你需要用WIN32API实现,以下贴出制做该对话框的函数 void CQQICKView::OnMmm(){ // TODO: Add your command handler code here CString m_FileDir; BROW转载 2011-12-21 16:59:07 · 1156 阅读 · 0 评论 -
warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
以前经常遇到这个警告信息,因为运行并没有什么问题,所以也没深究。但是耿耿于怀那个“ 0 个错误,0 个警告”的成功提示,在网上搜了一下。原来问题出在默认库的引用选择上。 VS2008,项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用的库都使用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。有时我们使用的库不转载 2011-12-21 20:12:46 · 1486 阅读 · 0 评论 -
CRect::DeflateRect() 压缩矩形
CRect 类中有这样的方法: void DeflateRect(int x,int y); void DeflateRect(SIZE size); void DeflateRect(LPCRECT lpRect); void DeflateRect(int l, int t, int r, int b ); 参数转载 2012-05-23 13:25:46 · 8974 阅读 · 0 评论 -
MFC 选择文件夹按钮
CString GetFolderFullpath(LPCTSTR lpszDefault){ TCHAR buffDisplayName[MAX_PATH]; TCHAR fullpath[MAX_PATH]; BROWSEINFO browseinfo; LPITEMIDLIST lpitemidlist; ZeroMemory(&原创 2012-05-23 16:39:24 · 3777 阅读 · 0 评论 -
在VS2010中开发ActiveX控件设置测试容器的方式
在VS2010中开发ActiveX控件设置测试容器的方式借鉴文章http://blog.youkuaiyun.com/waxgourd0/article/details/7374669 在VS2010中开发MFC ActiveX控件,开发完后,通常使用VS自带的容器ActiveX Control Test Container来运行ActiveX控件。此容器在VS安装后的文件中转载 2013-01-02 22:01:27 · 1248 阅读 · 0 评论