Windows软件设计
文章平均质量分 76
Augusdi
让时间验证一切,让时间验证我。感谢大家的无私帮助,我愿以同样的态度回馈我热情的朋友,用我们的热忱开创美好未来!
展开
-
背包之01背包、完全背包、多重背包详解
首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移动到2,再把最后一层移动到3,最后再把其余的从2移动到3,这是一个直观的关系,但是想列举出来是很难的,也许当层数n=3时还可以模拟下,再大一些就不可能了,所以,诸如递归,动态规划之类的,不能细想,只能找局部关系。图1.汉诺塔图片(引至杭电课件:DP最关键的就是状态,在DP时用到的数组时,也就是存储的每个状态的最优值,也就是记忆化搜索)要了解背包,首先得清楚转载 2020-09-17 22:11:36 · 1318 阅读 · 0 评论 -
线段树(区间树)Segment Tree
实际上还是称为区间树更好理解一些。 树:是一棵树,而且是一棵二叉树。 线段:树上的每个节点对应于一个线段(还是叫“区间”更容易理解,区间的起点和终点通常为整数) 同一层的节点所代表的区间,相互不会重叠。 叶子节点的区间是单位长度,不能再分了。线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。a,b通常是整数。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点[a,b],其左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2,b](除法去尾取整)。线段转载 2020-09-17 22:09:28 · 989 阅读 · 0 评论 -
mfc程序遇到的一些错误
1.Error 1 error C2440: static_cast : cannot convert from void (__thiscall CMainFrame::* )(NMTOOLBARA *,LRESULT *) to void (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *) d:/作业项目相关/12452121/mainfr转载 2009-07-14 18:35:00 · 3020 阅读 · 0 评论 -
从VC6到VC9移植代码问题总结收藏
首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于VC6有了很大的变化,一些编译参数和链接参数被废弃(比如/map:line),有一些改变了名称,还有新增的选项,不过不用担心,升级过程会自动对其进行转换,最终都会得到一个正确的解决方案和VC项目文件,转载 2009-07-14 18:36:00 · 2437 阅读 · 0 评论 -
STL map的使用方法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2009-07-21 17:21:00 · 2484 阅读 · 0 评论 -
C++界面库 - Xtreme Toolkit Pro
一套扩展MFC的界面库,可以很方便的实现各种界面风格。不过话说VC2008的MFC即将集成它竞争对手的产品BCGControl,呵呵官方网站:http://www.codejock.com/products/toolkitpro最新的11.20版本已经支持VC2008了,所以编译没有太大的问题。要注意的一点是,源文件的注释有一些非GBK字符,编译的时候命令行里最好加上/wd4819使用转载 2009-07-27 15:09:00 · 2990 阅读 · 0 评论 -
Sources文件
Sources文件 为指明创建设备驱动程序的详细信息,开发人员必须在驱动程序源文件所在的每一个子目录中都建立一个sources文件,且应遵循如下规则:1、 文件名必须是sources,没有扩展名。2、 文件内容由能够被BUILD工具所知别的宏定义组成,其定义格式如下:MACRONAME=MacroValue 其中,“MacroValue”是一个字符型原创 2009-05-16 08:17:00 · 5270 阅读 · 3 评论 -
侯捷归纳IT词汇表
以下是侯捷个人陆续收集整理的有关於我所涉猎的领域的术语对照(英中繁简)。欢迎所有朋友给我意见(任何意见)。谢谢。新书写作,或发表文章时,我会以此表为叁考。本表所列,并不表示我在写译书籍时一定会采用表内的中文术语。我也可能采用英文术语。一群性质相近同的「东西」,如果译名一贯,阅读的感觉就很好。一贯性的术语,扩充性高,延伸性高,系统化高。● 我喜欢「式」:原创 2009-08-01 13:51:00 · 1925 阅读 · 0 评论 -
Windows消息
//用户自定义消息ON_THREAD_MESSAGEON_REGISTERED_THREAD_MESSAGEON_REGISTER_MESSAGEON_MESSAGE//窗口通知消息控制函数ON_WM_WININICHANGEON_WM_WINDOWPOSCHANGINGON_WM_WINDOWPOSCHANGEDON_WM_VSCROLLCLIPBOARDON_WM_VSCROLL_REFLEC原创 2009-08-01 14:49:00 · 2657 阅读 · 0 评论 -
C++ Unicode SBCS 函数对照表
因为项目碰到了国际化的问题,自己整理了一下, 主要是从tchar.h里面导出的包括类型和各类字符相关的处理函数,大部分都应该是用不到的。如果有想用自动化工具替换字符升级到unicode版本的,这个列表就比较全了。至于转换工具的替换规则,以后再发GenericSBCSUNICODE转载 2009-08-01 15:17:00 · 2253 阅读 · 0 评论 -
WTL 7.5最终版发布
转载 2009-06-06 16:40:00 · 1817 阅读 · 0 评论 -
完成端口与高性能服务器程序开发
完成端口与高性能服务器程序开发Email:kruglinski_at_gmail_dot_comBlog:kruglinski.blogchina.com早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载转载 2009-06-06 16:42:00 · 1804 阅读 · 0 评论 -
ATL的艺术(一)-实现简单COM对象
以一个DropTarget为例,我们都知道在MFC里有COleDropTarget实现OLE拖放目标端非常容易,缺点MFC太臃肿近八年没有更新过了,而且功能类与窗体类分离代码不够紧凑,那么在ATL/WTL中要实现DropTarget也是非常的容易的,而且更码更加紧凑完美,完美的有点变态,呵呵!我觉得ATL小组的人曾经一定是些汇编语言狂热者,因为ATL的运行效率真的是太高了,非常高,难以想象转载 2009-06-06 16:48:00 · 2903 阅读 · 2 评论 -
设计简单的块加密算法
这是一篇笔记,是kruglinski写的一篇密码学方面的笔记,转载请注明出处和作者,我发现一些CSDN的朋友拿去了就成了原创,强!国人的原创能力还真的不错啊!这几天一直在思考密码学方面的东东,打算实现几个可以在驱动中使用的加密类,选定AES-256,TWOFISH-256和CAST-256算法,打算使用“工厂模式”来包装类的创建逻辑,这样在外部使用一个固定的接口,就可以使用不同的算法实现,这样转载 2009-06-06 16:50:00 · 5184 阅读 · 0 评论 -
可重用驱动代码片段
驱动里面操作文件真他妈的麻烦啊!以前没有搞过,昨天下午一直搞不好,昨晚看了看Native API 参考,在Ring3下只用DDK数据类型并引入NTDLL.DLL写了个例程,编译调试运行通过,拿到驱动程序里编译也可以。总结一个好的调试驱动程序的方法,大部分和Native API(ZwXXX之类的API)相关的的程序片段可以在Ring3编写调试(多方便啊!),引入NTDLL.DLL即可,不过有一点需要转载 2009-06-06 16:43:00 · 1638 阅读 · 0 评论 -
Shell Programming Tips
这篇笔记基于对Delphi 7自带ShellControl源代码的分析,看了不少MFC实现的类Explorer里的Shell控件,BCG,CjLib的,但都没有Delphi的Shell控件做的完美,比如TShellListView可以自动取得系统中语言相关的字符,如"名称","大小","修改日期",在英文系统中自变成"Name","Size",感觉很不错!分析一下它的代码,写下关键的地方,防止忘记转载 2009-06-06 16:49:00 · 2264 阅读 · 0 评论 -
System File Protection
Windows Me DDK: System File ProtectionSystem File Protection Installation programs that are not part of the operating system can overwrite shared system files, e原创 2009-06-09 16:59:00 · 2045 阅读 · 0 评论 -
Windows Me INF Guide
原创 2009-06-09 17:01:00 · 1974 阅读 · 0 评论 -
Windows Me DDK: System File Protected List
Windows Me DDK: System File Protected Listfilenamefiledirectory12520437.cpx%WinSys%12520850.cpx%WinSys%1394BUS.sys%WinDir%/system32/dri原创 2009-06-09 16:59:00 · 2865 阅读 · 0 评论 -
出现:'DataTypeEnum' : ambiguous symbol 错误怎么办?
ado.h,ado.cpp等是一个ado封装类 ,较容易使用,流传很广但是在工程应用或封装为动态库时经常会出现::error C2872: DataTypeEnum : ambiguous symbol: error C2872: ParameterDirectionEnum : ambiguous symbol 等类似错误,转载 2009-06-11 21:48:00 · 5109 阅读 · 0 评论 -
VC Thread的格式
HANDLE hThread_Read; DWORD dwThreadID; HANDLE hdev;DWORD WINAPI ThreadExecute_ReadFromEP1(PVOID pContext); hdev = INVALID_HANDLE_VALUE; hThread_Read = (HANDLE)CreateThread( NUL原创 2009-06-13 20:18:00 · 4731 阅读 · 0 评论 -
VC6中调用.dll文件中的函数——傻瓜式教程
决这一问题上的帮助。先声明下,我此前从未涉及过Windows 下的编程,所以对于懂了这么点东西就要写篇文章,大家可不要鄙视啊。实际上,写这篇文章的最主要原因是,我觉得调用.dll 文件里的函数应该是个很简单,很常规的用法,可是遗憾的是,我就查这么点东西,可以说是费尽了周折,足足耗了将尽两天的时间在网上“漫游”,到是也有很多人写过类似的东西,但是,很遗憾,也许是因为他们觉得的太简单而不想多罗嗦吧,我转载 2009-10-08 12:30:00 · 4082 阅读 · 3 评论 -
在VC中创建DLL文件的方法步骤
在VC中创建DLL文件的方法步骤今天教大家在VC中创建DLL文件的方法步骤,一起来学习一下,并不是很难的,相信聪明的你一看就会。 一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型。 (2)MyDll.h的内容如下:转载 2009-10-08 14:04:00 · 1868 阅读 · 0 评论 -
基于Visual C++6.0的DLL编程实现
基于Visual C++6.0的DLL编程实现一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中转载 2009-10-08 14:01:00 · 1320 阅读 · 0 评论 -
VC中DLL的创建及调用方法
此中只有实际才操作,而无相关理论² DLL的创建首先,用VC集成开发界面中的“新建”,新建一个项目。无论是VC6.0还是VC.NET,都有建立DLL项目的选项。只不过有些稍有不同,例如VC.NET中就有ISAPI DLL,扩展存储过程DLL等,这些都不在讨论的范围。例如我们建立了一个用静态连接MFC库的DLL项目,名称为mydll然后,编辑mydll.cpp文件,在其中加入我转载 2009-10-08 16:19:00 · 2005 阅读 · 0 评论 -
怎样获取未知DLL的接口参数
首先需要知道该函数有几个参数,然后再细化参数类型。详细分析过程如下: 可以通过反汇编来知道接口函数的参数,建议使用W32DSM来分析,也可以直接使用VC来分析,就是麻烦一点。现在使用W32DSM来具体说明:1、先打开需要分析的DLL,然后通过菜单功能-》出口来找到需要分析的函数,双击就可以了。它可以直接定位到该函数。2、看准该函数的入口,一般函数是以以下代码作为入口点转载 2009-10-08 16:20:00 · 6304 阅读 · 0 评论 -
隐式链接无.LIB动态链接库
由于我们经常要调用一些第三方厂商或其他编译器编写的动态链接库,但是一般都不提供源文件或.lib文件,而作为VC隐式链接到DLL(implicitly link to the DLL)调用,这些却是必需的。本文将主要讨论在没有源文件及.lib输入库文件或欲调用Windows未公开函数的情况下重建.Lib文件的方法。在建立之前,我们首先要了解一下DLL输出函数的几种方式。 一、从DL转载 2009-10-08 16:23:00 · 2131 阅读 · 0 评论 -
如何在非MFC扩展Dll中导出class说明及简单例子
如何在Dll中导出class说明:新建两个工程,其中一个是dll工程(我的示例程序中这个工程名为DllClass),另一个是测试和使用dll的工程(名字为DllClassTest) 注意点: 1。Dll工程编译完成后,将.lib和.dll文件拷贝到测试和使用dll的工程的适当目录下(我的程序是release目录),然后将Dll工程中的导出类的头文件(以下简称头文件)拷贝到测试和使用dl转载 2009-10-08 16:25:00 · 2583 阅读 · 0 评论 -
Win32环境下动态链接库(DLL)编程原理
比较大应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编转载 2009-10-08 16:27:00 · 1729 阅读 · 0 评论 -
delete this,dll导出类及如何写plugins(PART I)
1.为什么要使用delete this,以及如何使用。(1)考查这样的情况:有两个对象A,B需要访问同一个多态对象C。因为C一般是通过new 操作构造的,一定要自己释放,但是对象A,B都需要使用它,并且B不知道A什么时候使用完成C,A也不知道B什么时候使用完成C(当然可以用函数通信的方法通知了,不过是一个比较丑陋的实现方法),所以不能在A/B中间来delete,一个折中的办法是在程序退出的时候来d转载 2009-10-08 16:29:00 · 1545 阅读 · 0 评论 -
delete this,dll导出类及如何写plugins(PART II)
2.dll导出类的几种方法。其实我就知道两种啦,还请大家补充。先看M$使用的方法。struct exports{__declspec(dllexport)exports();__declspec(dllexport)~exports();};exports::exports(){}exports::~exports(){}优点:完全和本地的类一样使用,可以直接new/delet转载 2009-10-08 16:30:00 · 1781 阅读 · 0 评论 -
delete this,dll导出类及如何写plugins(PART III)
3.实现plugins。有了前两章的基础,这个就比较好办了。先了解一点点基本概念:Q:what is pluginsA:就是通过加载不同的dll实现不同的功能,或者附加的功能,典型的如模拟器的各种插件(显示,input...)。Q:why we use pluginsA:主要为了使程序模块化,并且容易扩充。升级组件时不需要重新发布整个产品。Q:how to do it?A:使用转载 2009-10-08 16:31:00 · 1562 阅读 · 0 评论 -
在VB应用程序中调用VC环境下开发的DLL
1. 调用DLL的优越性 动态链接库(DLL)作为Windows操作系统的基础,具有优越的应用性能: DLL扩展了应用程序的特性。由于DLL能够动态地装入进程的地址空间,因此应用程序能够在运行时确定需要执行什么操作,然后装入相应的代码,以便根据需要执行这些操作。 DLL可以用多种语言进行编写。例如用VB来编写应用程序的界面,而用C++来编写诸如算法、通讯之类的底层操作。 DLL简化了软件项转载 2009-10-08 16:32:00 · 2527 阅读 · 0 评论 -
在 Visual C++ 中 建 立 MFC 扩 展 DLL
有经验的Windows编程人员都逐渐放弃了WindowsSDK,而转向能为Windows内置的低级机制提供高级抽象的开发环境。这种转移的一个主要受益者是VisualC++,它依靠MFC库来提供WindowsAPI的面向对象的视图。 MFC是经验丰富的编程人员掌握的有力工具,但它离完美还相距甚远。事实上,我所认识的以MFC编程为谋生手段的人都开发了他或她自己的扩展集合,他们以MFC类作为基转载 2009-10-08 16:33:00 · 2376 阅读 · 0 评论 -
关于VC中的DLL的编程
在我们实际用软件时,经常可看到许多动态连接库。动态连接库有其自身的优点如节省内存、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变调用起的函数并不需要重新编译。这在编程时十分有用。至于其他妙处,各位在电脑杂志、书籍中都能看到,我这里再说就是废话了.这次小弟我所要讲的是如何在VC5.0中如何做自己的Win32DLLs,各位要做转载 2009-10-08 16:36:00 · 2306 阅读 · 0 评论 -
剖析插件技术
很多人对插件技术很感兴趣,这两天我对播放器的插件技术的原理做了些研究,现在就把一些心得写出来。插件原理就是通过统一的程序接口来调用不同的模块,以实现不同功能的调用。用来扩充主程序的功能。现在我们来谈谈它的实现。插件技术的实现,一般都是先定义好一个接口结构。这个结构包含了主程序要引用的接口函数的指针。当然,这些接口函数的格式必须是事先定义好了的。而在插件Dll中一般只有一个导出函数,转载 2009-10-08 16:37:00 · 2149 阅读 · 4 评论 -
在ActiveX控件中如何动态调用DLL函数
刚到公司不久,接到领导的下达的一个任务,就是把对POS机操作功能封装在ActiveX控件中,在IE中调用。这样就能实现在IE上直接对POS机进行操作。而我要封装的这个动态库,厂家只提供了一个单的动态库和一百多字的说明,也就是说明一下动态库中有机个函数和其对应的参数。也就是厂家就连动态库对应的头文件也没有提供。:-(这样也行?!接到这个任务后,我第一想到的是用VC的ATL来实现它。你问我为什么要用A转载 2009-10-08 16:38:00 · 5724 阅读 · 0 评论 -
注册表从入门到精通
注册表从入门到精通 注册表对有的人还是比较陌生的,因为现在第三方软件太多了,如优化大师、魔法兔子等等,但个人觉得改善系统的第三方软件还不够完善,如果初级用户使用不当,会出现严重的后果,所以提供这篇文章,希望大家多多学习,本人能力有限,还希望大家多提宝贵意见: 一、注册表的由来 PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。原创 2009-10-08 23:55:00 · 8373 阅读 · 21 评论 -
指针与引用
//---------------------------------------------------------------------引用是一种没有指针语法的指针.与指针一样,引用提供对对象的间接访问.--《c++ primer》p29虽然引用也可以被用作一种指针,但是象对指针一样用一个对象的地址初始化一个引用却是错误的。例如:int i=0;int &refi=i; //ok,refi指转载 2009-10-10 10:54:00 · 2300 阅读 · 0 评论 -
引用
在C++中,还有一个引用的概念。引用就是一个变量的别名,它需要用另一个变量或对象来初始化自身。引用就像一个人的外号一样,例如:有一个人,他的名字叫做张旭,因他在家排行老三,别人给他取了一个外号叫张三,这样,我们叫张三或张旭,指的都是同一个人。下面的代码声明了一个引用b,并用变量a进行了初始化。int a = 5;int &b = a; //用&表示申明一个引用。引用必须在申明时转载 2009-10-10 11:01:00 · 1572 阅读 · 0 评论