
WINDOWS
文章平均质量分 52
阜哥
雄心的一半是耐心
展开
-
MFC的生与死
经常从网上下载好程序,但打开VC看了不到几行,鼠标就移到最到最右上角,对准那个“X”,咔嚓...(心还暗念:嚓死你!),二话不说在“程序”菜单里寻找QQ的存在,开始进入休闲时光!!这可是我经常做的事情,唉!苦于基础不扎实,经常被美好的代码踢出门外。但幸好我还对她有一斯感觉,近来有幸买到侯先生的《深入浅出MFC》,看到第六章:MFC程序的生死因果,觉得是学MFC,喔不,应该是看MFC程序代码的好起点转载 2006-10-12 01:08:00 · 1205 阅读 · 0 评论 -
MFC ActiveX
要干什么?创建一个控件,导出一个方法,提供一个事件,应用一个属性;方法提供两个输入参数,接收web的输入,事件提供一个参数,把方法输入的两个参数加上属性值传递给web。开始! 第一步创建工程:(VS2005)菜单“文件”--“新建”--“项目”,“项目类型”选择MFC,模版选择“MFC ActiveX 控件”,输入名称“MyActiveX“后确定,接下来弹出的向导中的设置全部采原创 2009-08-14 18:59:00 · 3753 阅读 · 3 评论 -
bat批处理文件
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE原创 2009-08-27 18:50:00 · 643 阅读 · 0 评论 -
windows服务
显示名称:Alerter进程名称:svchost.exe -k LocalService微软描述:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。补充说明:警报器。该服务进程名为Services.exe,一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Administr转载 2009-07-01 14:57:00 · 1581 阅读 · 0 评论 -
ActiveX 安全问题
工作中写了一个MFC ActiveX,测试的时候,发现IE6和IE8修改了安全设置后能够正常运行,IE7和别的浏览器则始终无法正常运行,经过多方查找,发现缺少一些安全信息注册,添加下列代码后能够正常运行了。 首先定义三个函数:HRESULT CreateComponentCategory(CATID catid, WCHAR *catDescription){ ICatRegi原创 2009-09-09 16:55:00 · 816 阅读 · 0 评论 -
播放器进度条的设计
做了一个播放器的进度条,期间出现了一个很严重的问题,现记录下来供以后温习。 进度条使用CSliderCtrl控件。CSliderCtrl控件属于Scroll类型,有page的概念,点击CSliderCtrl进行定位播放的时候获得的pos是不准备的。这是因为,点击CSliderCtrl定位,滑块会向鼠标的方向滑动一个page的大小,而不是定位到鼠标点击的位置。 处理的方式就是在父窗口原创 2009-07-09 17:31:00 · 1780 阅读 · 0 评论 -
ICO图标
一个小小的ICON图标,一个简单的ICON文件,却有复杂的内涵。用ACDSEE打开C:/Program Files/Microsoft Visual Studio 9.0/Setup/setup.ico文件,发现有9个page,也就是说,一个ICON文件包含了9个不同分辨率的ICO图标。 用VS打开这个文件,首先弹出一个警告框,没关系,这是说VS无法编辑32位的图片。在菜单中找到“原创 2009-10-09 17:29:00 · 2124 阅读 · 0 评论 -
谁的事情谁做,千万不要代劳
一直在想,如何高效的重复使用代码,做界面的时候,也常想如何让一个对话框类复用。由于对话框类比较特殊,一般都是针对特定的需求制定,有几个编辑框,几个组合框,几个按钮,有没有复选框等等,各不相同,要复用对话框是比较难的。偶尔也有一些窗口可以复用,例如一个对话框用来接收一条记录的输入,当有多个地方需要添加这样的记录的时候,就可以复用这个对话框。 但是,一定不要在子窗口中去更新父窗口的控件状原创 2009-11-02 20:00:00 · 810 阅读 · 0 评论 -
Inno Setup使用小技巧
使用Inno Setup制作安装包小技巧:1.去掉欢迎界面在[code]段中添加如下代码:function ShouldSkipPage(PageID: Integer): Boolean;beginif PageID=wpWelcome then result := true;end; 其中的wpWelcome表示欢迎界面,要去掉其他的界面,只需要改变这个常量原创 2009-11-02 14:03:00 · 1459 阅读 · 0 评论 -
Inno Setup 小技巧2--Shellexec
Inno Setup 的Shellexec的功能类似乎Windows API 的ShellExecute函数,执行某种操作,可以是开启一个进程,可以打开一个浏览器等等。不过,Inno Setup 的Shellexec有一个优点,这个优点体现在第六个参数上。 首先看shellexec: function ShellExec(原创 2009-11-14 15:57:00 · 16422 阅读 · 0 评论 -
Mapping
HANDLE WINAPI CreateFileMapping( __in HANDLE hFile, __in LPSECURITY_ATTRIBUTES lpAttributes, __in DWORD flProtect, __in DWORD dwMaximumSizeHigh, __in原创 2010-03-31 16:19:00 · 914 阅读 · 0 评论 -
DLL的一点体会
动态库中的全局数据在一个进程中只会创建一份,不会收到LoadLibary的影响。而在不同的进程中会创建多份,且进程之间相互不影响。因此,进程之间共享的只是动态库的代码段,而不是数据。原创 2010-09-17 17:31:00 · 761 阅读 · 0 评论 -
windows堆管理API
HeapCreate, HeapDestroy, HeapAlloc, HeapFree堆内存管理工具。原创 2011-05-11 11:46:00 · 1374 阅读 · 0 评论 -
(转)编译器原理
<br />转载自 http://blog.youkuaiyun.com/ouczoe/archive/2009/12/03/4933460.aspx<br /> <br />一.预处理器-编译器-汇编器-链接器<br />预处理器会处理相关的预处理指令,一般是以"#"开头的指令。如:#include "xx.h" #define等。<br />编译器把对应的*.cpp翻译成*.s文件(汇编语言)。<br />汇编器则处理*.s生成对应的*.o文件(obj目标文件)<br />最后链接器把所有的*.o文件链接成一个可执转载 2011-05-13 15:39:00 · 747 阅读 · 0 评论 -
局域网音频对讲
局域网音频对讲涉及到音频采集、音频播放、网络传输等技术,需要使用到多线程处理的方式。原创 2011-04-15 17:54:00 · 2541 阅读 · 2 评论 -
模块形式
把模块的组织形式分成三类。原创 2011-05-03 11:13:00 · 1120 阅读 · 0 评论 -
debug模式的malloc
debug模式申请堆内存空间,以及运行时库如何维护堆内存链表和判断内存越界。原创 2011-05-11 10:46:00 · 3691 阅读 · 0 评论 -
“hello world" ATL控件
一下创建一个ATL工程,编译生成atl的控件,并在web中演示。 第一步,建立工程:(VS2005)“文件”---“新建”---“项目”,项目类型选择“ATL”,项目模版选择“ATL项目”。输入名称"ATLTemp"后点确定,“服务器类型”选择“动态链接库”。第二步,添加控件:选中工程右键添加类,类别选择“ATL”,模版选择ATL控件“,点击添加按钮。在”简称“中输入一个名称原创 2009-08-10 20:41:00 · 1665 阅读 · 0 评论 -
系统托盘
像QQ一样在任务栏右边通知区域显示小图标: 实现函数:BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA lpdata) 处理消息:1、自定义消息,消息处理函数(回调函数)。回调函数中处理对通知区域小图标的事件,如左键单击小图标(WM_LBUTTONDOWN)、右键单击小图标(WM_RBUTTONDOWN),左键双击原创 2009-05-05 11:19:00 · 638 阅读 · 0 评论 -
多视图静态切分SDI窗口
今天,终于完成了一直以来都想做到的像WINDOWS中的MMC那样的界面。小小的开心了一下,现在将心得总结如下:1。在VC6.0中建立一个SDI工程,工程名为dbvView,在向导的第六步中的WINDOWS风格中选中“应用拆分窗体”。工程建立好了以后,我们可以看到选中了“应用拆分窗体”选项创建的工程,和一般的工程不同的地方:在CMainFrame类中多了一个CSplitterWnd类型的变量原创 2006-10-19 02:11:00 · 2862 阅读 · 9 评论 -
修改标题栏
刚才在论坛里看到有人问到如何修改主窗口标题的字符串和图标的问题。上网搜索了一下,发现问这个问题的人还不少。我总结了一下,和大家共享。1。其实修改主窗口标题很简单,现获得当前活动窗口句柄,再调用SetWindowText()函数,这是个Window API函数,具体实现如下 CString s="自定义窗体"; HWND hWnd=::GetActiveWi原创 2006-10-24 01:21:00 · 2313 阅读 · 2 评论 -
续切分视图
有读者对我前一篇文章里写的出现错误的处理不太明白,对视图类的继承不太明白,我决定再写一篇文章进行说明,希望对大家有帮助,如果有不对的地方,也希望各位高手指出。在VS.NET2003中新建一个项目,取名为“MMC”,在“应用程序类型”中选择“单文档”,在“用户界面功能”中选中“拆分窗口”。这样创建的工程与默认的工程相比,在CMainFrame类中多了一个数据成员CStatusBar m_wnd原创 2006-10-28 15:27:00 · 1512 阅读 · 0 评论 -
VC中ADO编程
介绍VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。 正文一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘转载 2007-04-27 14:29:00 · 3130 阅读 · 1 评论 -
MFC中使用ADO访问数据库
目前,我所掌握的VC程序访问数据库有两种方法,一种是用ODBC,一种是ADO。ODBC访问数据库主要是通过MFC中的两个类,一个是CDatabase,一个是CRecordSet。这种访问方式需要设置数据源,我始终觉得不灵活,所以我比较喜欢使用ADO。ADO有三个智能指针:_ConnectionPtr,_CommandPtr,_RecordsetPtr。在使用ADO之前,必须加载ADO,原创 2007-05-07 22:53:00 · 2520 阅读 · 2 评论 -
字符串转换为十六进制
一般的程序对字符串操作,串口程序却时常采用十六进制串。我在本在的社区中看到一位大侠的一个转换算法不错,贴出来和大家贡献。char ConvertHexChar(char ch);int String2Hex(CString str, CByteArray &senddata,char*tag);函数功能:将CString 类型的str转换成CByteArray类型,保存在senddat原创 2007-08-17 11:53:00 · 19115 阅读 · 7 评论 -
把文本中的记录写入数据库中
有一个文本文件,文件中每一行是一套记录,一条记录有8个字段,每个字段中间用TAB空开,将文件中的记录写入ACCESS数据库中的XZJH表中,操作如下: CTYDataP dp; //自定义的一个操作数据库的类 dp.OpenDatabase("Tool.mdb"); //连接名为tool.mdb的数据库 dp.OpenDataSet("select * from xzjh"); /原创 2007-05-23 23:08:00 · 1747 阅读 · 0 评论 -
在VC中使用智能指针操作Excel
在VC中使用智能指针操作Excel最近的一个工程中,需要将数据导入Excel表格中,项目经理知道我以前没有接触过操作Excel的经验,于是给了一段小程序给我,让我参考着做。这段程序是使用智能指针操作Excel,在网络上找了一个星期,居然没有一片关于智能指针操作Excel的文章,只有Automation技术,而且所有介绍原创 2008-10-10 12:02:00 · 4693 阅读 · 1 评论 -
VC创建EXCEL图表
在EXCEL中手动能够执行的操作,在VC下,都能通过COM提供的技术来实现,下面是我在工作中使用智能指针对EXCEL的CHART操作的一点肤浅的认识。如果对VC操作EXCEL一点都不了解的话,建议先看看我写的上一篇日志,了解一下EXCEL的结构,因为下面很多内容都是基于上一篇文章。要想生成一张图表,首先要原创 2008-11-01 11:16:00 · 7713 阅读 · 4 评论 -
在指定区域内绘制文本
在某些情况下,显示文本的区域比较小,而显示的文本比较长,这时就需要截取部分文本,并以省略号的代替的形式来显示文本,下面这个函数是一个比较笨拙的处理方式:int DrawTextInRect(HDC hDC, CString& strText,RECT& rect,UINT nFormat,CSize sizeMargin = CSize(0,0)){ //在指定区域以指定格式绘制文本原创 2009-04-15 12:20:00 · 897 阅读 · 0 评论 -
透明窗体
windows 2000以及之后版本的系统,都支持一个函数,用来设置窗体透明属性。函数原型:BOOL SetLayeredWindowAttributes( HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags); 参数说明:很明显,第一个参数是需要设置属性的窗体的句柄,第二个参数是原创 2009-04-15 17:52:00 · 851 阅读 · 0 评论 -
字符串资源管理
VC工程中有个*.rc文件,放的是图片、字符串等资源,该文件可以用记事本打开,我们可以理解它就是一个文本文件。放在RC中的资源会被编译到软件的可执行程序中,作为不可修改的一部分。在这中情况下,如果要切换语言(针对字符串资源),更换界面风格(图片资源)等等,就必须对工程的RC文件重新编辑,并大量调整程序,然后重新发布软件,不言而喻,这样很不好。后来,设计人员就想到了一种方式,把这些资源放在动原创 2009-04-03 12:47:00 · 1269 阅读 · 0 评论 -
dynamic_cast
class CBase{public: CBase(){}; ~CBase(){}; virtual void Fun(){};};class CDerive : public CBase{public: CDerive(){}; ~CDerive(){}; void Fun(){}; void DeriveFun() { m_nIte原创 2009-04-16 13:10:00 · 745 阅读 · 0 评论 -
从CWnd中找出Win32 Application的清晰结构
CWnd是MFC中所有窗体类的基类,对WIN32 API函数进行了封装。由于涉及到进程、线程、安全等内容,使得CWnd类有些复杂。然而,结构是清晰的,遵循WIN32 APPLICATION的编程思路。CWnd是一个管理窗体的类,而不是一个真正的窗体,这样说可能有些矛盾。在WIN32下,窗体仅仅是CreateWindow函数返回的一个句柄所代表的内部数据结构。在CWnd类中有这样一个窗体句柄m_hW原创 2009-04-16 17:33:00 · 1013 阅读 · 0 评论 -
动态库工程
VS2005创建动态库工程步骤:文件->新建->项目,在项目类型中选择“Win32“,在模板中选择”Win32项目“,填入名字和位置,点击确定以后,在向导中选择”应用程序设置“,应用程序类型中选择”DLL(D)“,其他采用默认设置,完成。 添加一个头文件作为导出头文件,命名为MyDll.h(随便命名),这个文件将作为其他工程使用该动态库所要包含的头文件。在这里,既可以导出类名,也可以导出函原创 2009-04-21 18:38:00 · 919 阅读 · 0 评论 -
Color Dialog Box 调色板
系统调色板对话框可以分为三个部分,Basic colors、Custom colors和Extended。 创建一个调色板对话框,只需要定义一个CHOOSECOLOR的变量,配置这个结构体的成员,然后以这个变量为参数调用ChooseColor函数即可。CHOOSECOLOR结构体:typedef struct { DWORD lStructSize;原创 2009-07-13 18:50:00 · 1408 阅读 · 0 评论 -
Find and Replace Dialog Boxes 查找和替换对话框
打开一个文本编辑器,按下Ctrl + F 出现左边图样的对话框--查找对话框,按下Ctrl + H 出现右边图样的对话框--替换替换对话框,在Windows中定义了两个结构体和两个函数,让我们在编程的时候能够很方便的创建这两个对话框。 这两个对话框不像系统中其他的对话框那样,这是非模态的对话框,允许用户在主窗口和这两个窗口之间来回切换。 在创建对话框之前,必须先调原创 2009-07-13 19:33:00 · 1974 阅读 · 0 评论 -
使用预编译头(/Yu)和创建预编译头(/Yc)
创建了一个空的工程,不停的添加新项,添加新类,数量越来越多,发现,每次修改一处,都会把所有的重新编译,速度实在太慢,原来是没有使用预编译头。我把别的工程的stdafx.h和stdafx.cpp拷过来,工程属性改为"使用预编译头(/Yu)",编译报错,改为“创建预编译头(/Yc)”,还是报错。百思不得其解,只好创建一个hellow world,发现除了stdafx.cpp文件是“创建预编译头原创 2011-11-17 22:03:22 · 4879 阅读 · 1 评论