Win32/MFC
Chinamming
这个作者很懒,什么都没留下…
展开
-
微软软件开发技术二十年回顾
今年11月,微软新一代的操作系统Vista即将正式发布,它将会极大地改变原有的Windows编程机制。近20年来,随着技术和应用的变化、发展,微软的开发技术也历经变迁。随着微软下一代开发平台vista即将发布,微软会把开发者引向何方? 自Windows 1.0问世到今年11月份,微软Windows操作系统已经走过了它辉煌的二十一年。沧海桑田一瞬间,让我们再次追随Windows的转载 2013-05-16 09:14:36 · 1034 阅读 · 0 评论 -
如果一个程序跑10000次只失败一次,你会怎么调试?
CLR小组中存在着大量的回归测试,这些回归测试会定期执行来发现CLR中的Bug,Developer在Checkin之前,也需要执行这些测试的一部分(大概是10小时左右,如果全部跑的话估计要好几天)。这些测试对于保证CLR的质量是至关重要的。有时候,这些测试会偶尔失败,比如跑100次失败大概一到两次,有些极端的例子甚至是10000次才失败一次。像这种问题通常是很难调试的。在前面调试Bug的神兵利器:转载 2013-12-08 23:58:10 · 1053 阅读 · 0 评论 -
有了WCF,Socket是否已人老珠黄?
1. Socket相关背景 Socket,中文译为“套接字”,最早在UNIX中引入并得到广泛应用,后来微软在设计Windows时引入了UNIX中的这个概念和相应的设计理念,并针对Windows的特性略作调整,形成了Windows平台上的Socket,简称为“WinSock”,并为开发者提供了一整套的API,称为“Windows WinSock Win32 API ”。 WinS转载 2014-02-08 21:54:22 · 2468 阅读 · 0 评论 -
黑客常用WinAPI函数整理
黑客常用WinAPI函数整理 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底层API编程。为了使读者对黑客常用的Windows API有个更全面的了解以及方便日后使用API方法的查询,特将这些常用的API按照7大分类进行整理如下,希望对大家的学习有所帮助。一、进程创建进程:CreateProcess("C:\\windows\\n转载 2014-02-08 21:25:23 · 1406 阅读 · 0 评论 -
手工搭建32位汇编语言程序开发环境
目标: 以创建一个简单的对话框程序为例搭建环境,目标是用到最少的资源,这样我们能够知道一个程序的来龙去脉。实现: 从Visual Studio 安装环境中拷贝 ML宏汇编器和LINK链接器;拷贝部分.h头文件和.lib链接库文件。分析: [工具]C和C++的编译器为CL.EXE,汇编语言的编译器为ML.EXE,这两个程序都能生成COFF格式的目标文件OBJ;然后用通用的转载 2014-02-08 21:27:03 · 1459 阅读 · 0 评论 -
理解Windows内核模式与用户模式
内核层次架构windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。下面是内核的层次划分:硬件抽象层(Hardware Abstraction Layer) (HAL) (hal.dll)转载 2014-02-08 21:29:31 · 1088 阅读 · 0 评论 -
如何学习WindDbg
作为一名Windows平台上的C/C++开发人员,我们有N个学习WinDbg的理由: 有些Bug只有在客户和QA的机器上才能重现,我们不可能在他们的机器上装一个VC吧WinDbg可以让我们方便的保存和分析Dump文件WinDbg的调试功能比VC强大的多,比如它有强大的API断点和条件断点调试内核和驱动,我们只能用WinDbg用WinDbg可以让你更深入的理解系统,理解计算机,用转载 2014-02-08 21:38:11 · 1439 阅读 · 0 评论 -
缓冲区溢出攻击
缓冲区溢出攻击 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成转载 2014-02-08 21:24:33 · 1903 阅读 · 0 评论 -
Windows内存与进程管理器底层分析
来源:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=58182内存与进程管理器========================== But I fear tomorrow I'll be crying,转载 2014-02-08 21:26:18 · 3851 阅读 · 0 评论 -
怎样才算会一门编程语言
今天, 同事问我会不会Python, 我犹豫了一下:不会。 实际上我曾经学习过这个语言,当时还用它写了些小工具, 可现在我对这个语言的印象只剩下它那特殊的缩进格式了。 由此思考怎样才算会一门语言?我想每个程序员都接触过多门语言 , 那么究竟怎样才算会这门语言了呢? 会一门语言, 当需要它时, 应该能很快用该语言解决某个问题, 这个是最基转载 2014-02-08 21:34:01 · 1864 阅读 · 0 评论 -
XP之后Windows的一些变化
看到很多Windows开发人员,尤其是C++程序员思维还是停留在XP操作系统,当然根据工作是否需要新知识 ,这本身没有错。但是实际上Vista之后的Win7, 再之后的Win8 ,Windows已经发生了很大的变化,我们程序员也该了解和适应这些变化。先看看Windows的发展历史:从上面的图,我们可以看到大概时间点:Win 95: 1995Win 98: 1998W转载 2014-02-08 21:31:48 · 1096 阅读 · 0 评论 -
落伍的感觉
作为一个传统的Win32开发程序员,感觉这些年技术变化可真快,总结一下主要体现在以下几方面: (1)互联网应用的重新崛起 从Google到阿里巴巴,再到Facebook, 从以前的博客到现在的微博,Web正在影响越来越多人的生活。越来越多的开发人员参与到Web开发中,从前端的Web2.0/Web3.0,HTML5, 到后台的云计算,云存储,云框架,各种新技术层出不穷转载 2014-02-08 21:40:22 · 1340 阅读 · 0 评论 -
C++中实现回调机制的几种方式
(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typedef void (__stdcall *DownloadCallback)(const char* pURL, bool bOK)转载 2014-02-08 21:36:03 · 1097 阅读 · 0 评论 -
C/C++中可变参数的原理
以前只是知道可变参数怎么用,但是一直对它的原理是似懂非懂,现在对计算机有了比较深刻的认识之后,回头再看,豁然开朗。要理解可变参数,首先要理解函数调用约定, 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cdecl由外部调用函数清栈,而__stdcall由被转载 2014-02-08 21:35:35 · 834 阅读 · 0 评论 -
理解程序内存
内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,高2转载 2014-02-08 21:34:38 · 928 阅读 · 0 评论 -
调试Bug的神兵利器:通过WinDbg条件断点收集Log
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试:1. 设置数据断点2.转载 2013-12-08 23:57:12 · 934 阅读 · 0 评论 -
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
BackgroundMSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本转载 2013-12-08 23:56:02 · 967 阅读 · 0 评论 -
MFC 利用控制台输出调试信息
方法一:WINDOWS为你提供了一系列的API来完成这个功能,例如:ReadConsole,WriteConsole等,具体参见MSDN。 1。首先调用AllocConsole函数来为你进程创建一个Console,该API是将当前进程Attache到一个新创建的Console上。你还可以通过调用SetConsoleTitle(tstrName);来设置Console的Tit转载 2013-11-29 23:49:30 · 1842 阅读 · 0 评论 -
ASP文件上传方式大比拼
无组件方式 1.化境ASP无组件上传 V2.0; 一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件。可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息。还有的就是组件的兼容问题。在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中。 化境无组件上传转载 2013-05-21 23:06:27 · 1462 阅读 · 0 评论 -
消除关于.NET的四个误解
http://www.fawcette.com/China/DotnetMagazine/2002_07/article.asp?page=1&xml=Clearing 同任何新的技术一样,人们对.NET也有一些误解。让我们来看看四个最普遍的误解的真 实情况吧。 by Mark Driver 涉及技术: .NET Framework, Visual Basic .NE转载 2013-05-22 14:15:10 · 740 阅读 · 0 评论 -
Embed an HTML control in your own window using plain C
Embed an HTML control in your own window using plain CBy Jeff Glatt, 3 Aug 2006 Mandatory COM objects we must create Extra COM objects we may choose to create Obtain the browser object Dis转载 2013-05-22 19:50:25 · 1514 阅读 · 0 评论 -
BCGControlBar使用方法
一. 关于BCGControlBar。BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Microsoft Visual Studio.NET的应用程序(用户工具栏、菜单、键盘等等)。BCGControlBar库包含了大约150多个经过精心设计,测试和具有完备文档的MFC扩展类。这些都可以转载 2013-05-27 02:07:56 · 4059 阅读 · 0 评论 -
vc和MFC的详细历史
VisualC++ 1.0:C++编译器的终结者 唯技术”思想有时能使陷入一种困境,作为一种编程工具(也可以认为是一种技术),Visual C++经历了许多风波和变革,但纵观目前几乎所以有书籍和文章,很少对这种技术进行“跳出圈外”的思考,这也使我写这篇文章感到无源的苦恼。细想之后,也颇为感慨,愿借此文以激众家之思! Visual C++的发展与C/C++语言、Windows的历程转载 2013-06-11 01:42:07 · 791 阅读 · 0 评论 -
回顾Microsoft Visual C++ 与 MFC的历史
Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软窗口程序设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++转载 2013-06-11 01:41:07 · 959 阅读 · 0 评论 -
ADO,OLEDB,ODBC,DAO的区别
ODBC(Open Database Connectivity,开放数据库互连)1992年,微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQ转载 2013-06-26 12:42:17 · 703 阅读 · 0 评论 -
Visual C++中的ADO编程
摘 要:本文介绍了微软推出的以ActiveX技术为基础的ADO数据存取技术,分析了ADO的工作原理,并用Visual C++说明了ADO数据访问技术的实现方法。关键字:ADO;连接对象;OLE DB;数据存取;记录集 ADO(ActiveX Date Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术。ADO技术基于COM(Co转载 2013-06-26 22:39:33 · 978 阅读 · 0 评论 -
深入MFC扩展DLL
1 问题的引出在创建一个使用MFC的DLL时,VS向导自动添加了一个从CwinApp继承而来的类,并重载了InitInstance和ExitInstance两个函数。在这个文件的前面还有一段注释:////TODO: 如果此DLL 相对于MFC DLL 是动态链接的,// 则从此DLL 导出的任何调入// MFC 的函数必须将AF转载 2013-07-21 00:26:19 · 1353 阅读 · 0 评论 -
COM in plain C By Jeff Glatt.
ContentsA COM object and its VTable A GUID QueryInterface(), AddRef(), and Release() An IClassFactory object Packaging into a DLL Our C++/C include file The Definition (DEF) file Insta转载 2013-05-22 19:38:10 · 1119 阅读 · 0 评论 -
VC6.0开发OCX按钮控件
0 前言1、OCX是典型的ActiveX控件,常见的OCX控件有很多,IE浏览器、Word、Excel等都提供各种各样的OCX控件。2、OCX控件的优点是可以在其他应用程序中嵌入使用。OCX控件做为插件、外挂式的应用非常灵活方便。3、一般用的比较多的是做为视频、图片、图表等显示区域控件。最近碰到几个按钮的功能要封装成OCX控件,供其它程序使用。网上大概搜索了下,资料不多,于是自己写转载 2013-07-09 08:39:49 · 2950 阅读 · 0 评论 -
.Net和MFC的区别与联系
1,MFC是在API的基础上封装出来的一个类库,给C++程序员在Windows上快速开发用的。1,.Net类库是在Windows非托管API的基础上封装出来的一个托管类库,给程序员在各种Windows平台上跨平台开发用的。2,只是两个不同平台的编程,一个是NET平台,一个是WIN323,.net的基类是基于.net运行时库的,通过运行时库对操作系统和硬件进行操作,而MFC是转载 2013-07-29 13:07:54 · 1134 阅读 · 0 评论 -
Direct UI
在界面开发中,目前DirectUI是个热门的技术名称,因为众多的知名公司都是用DirectUI方式作出了很炫丽的界面。而对于大多数熟悉Win32控件,熟悉MFC开发的开发人员来说,我们应该做何选择?因为传统的Win32/ MFC大家都比较了解,所以首先我们分析DirectUI,看看DirectUI能完成哪些普通Win32控件难以实现的功能,同时实现一个完整的DirectUI有那些关键点转载 2013-05-27 02:47:02 · 1054 阅读 · 0 评论 -
VC中EditCtrl的自动换行
在VC中使用Edit控件显示内容时,常常需要对显示的内容进行换行,一般采用关联一个CString变量的方式,然后在需要换行的地方将CString的关联变量加上:"\r\n",注意必须是换行回车"\r\n"只加"\n"是不行的。 而且还有一个需要注意的是需要将控件属性Multiline设为true,否则也不会换行,这个经常会忘记,加上"\r\n"之后却没有实现换行,最后发现原来是属性转载 2013-11-29 23:41:55 · 1526 阅读 · 0 评论 -
理解 Windows API 调用过程
我们在应用层调用一个Win32 API, 系统内部究竟是如何执行的, 它是如何从用户态进入到内核态的呢 ?对于每层一些概念的解释,这里不详述了,具体可以参考理解Windows内核模式与用户模式.以Kernel32里的 CreateProcess 为例, 内部会调用ntdll.dll里导出的NtCreateProcess, ntdll.dll通过一个中断请求int 2Eh转载 2014-02-08 21:48:31 · 1329 阅读 · 0 评论