`
helpbs
  • 浏览: 1162237 次
文章分类
社区版块
存档分类
最新评论
文章列表
钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以DLL(动态连接库) ...
引子网友问:很多的参考书目中都是把对数据库的操作都是独立于文档类封装成数据库类。基本上是对应一个表就要建立一个类,在其中实现“增、删、改、差”的功能。代码看起来比较庞大,当然通过类的划分模块比较的清楚 ...
前天MSN上突然有个网友给我发了一个文件,叫做funny.exe。什么也没想,就下载运行。在屏幕上一阵猛烈的闪烁之后,同事告诉我这是一个病毒。我的MSN上共有联系人80多名。所以上线的朋友都收到了我转发的病毒。于是,过了不久,我上海的同学发了三个短信痛斥我,最后直接打电话兴师问罪。原因是他的机器连系统都进不去了。我无话可说。。。。。。
本篇想说一下如何获取记录集中各种类型的数值。比如数据库中定义的是varchar类型等,我们获取数据时该怎么写呢?这里我提供一些宏定义,大家只要在stdafx.h或者其它需要使用这些宏的地方插入这些语句,就可以很轻松的获取数据库中的数据了。与数据库是何种类型没有关系。#define CREATEINSTANCE(sp,riid) {HRESULT _hr=sp.CreateInstance(__uuidof(riid));if(FAILED(_hr)) _com_issue_error(_hr);}这是创建数据库连接,command和记录集对象使用的。可以这样调用:CREATEINSTANCE(m ...
将就一下,程序能够运行再说吧。添加了错误日志后,发现有很多条记录无法插入。错误报告为传入的数据类型不一致。仔细看了程序,好像没有任何破绽啊。经过分析,可疑的语句为: param = cmmd->CreateParameter("",adTinyInt, adParamInput, sizeof(BYTE), sMsgData15.bPosAcu);bPosAcu是个bool类型。发现错误报告中该变量的值都是1。到数据库搜索,发现这个字段都是0(字段类型为tiny int)。嗯。应该是这里的问题了。可为什么1不行呢?不管,先强制转换为BYTE类型再说吧。因为 ...
搞定ADO引入后,我尝试用command方式调用存储过程。存储过程主要是根据输入的参数,执行一个复杂的查询语句,因此返回的是个记录集,同时存储过程本身有个返回参数。程序如下:{ _CommandPtr cmmd; _ParameterPtr param; HRESULT hr = cmmd.CreateInstance(__uuidof(Command)); if(FAILED(hr)) { AfxMessageBox("GetShipTrack()中创建_CommandPtr对象失败&q ...
最近使用ADO+SQLSERVER编程。作为一个数据库编程的新手,在使用过程中碰到一些现象和问题。有的解决了,有的还没有解决。在此以笔录的方式和大家交流一下。对于ADO的使用,大家都知道要引入msado15.dll。但引入的方式好像不止一种。以前都用的方式是:#import "c:/program files/common files/system/ado/msado15.dll" no_namespacerename("EOF","adoEOF")但是问了朋友以后,发现msado15.dll还有其它引入方法:#import <m ...
引子 英语学习,对很多莘莘学子来说,是一个艰辛而又痛苦的过程,最终的结果可能还是一知半解。能够读一些资料已经是不错的结果了。 对于大学学习来说,不少人头痛的就是英语的四级考试了。”枪手“一词之所以成名, ...
正式开始在CSDN上回答问题大概是从2004年2月20日开始。我的同事告诉我,CSDN很好。从此我就迷上了。刚好接下来的几个月,没有什么项目可做,因此一直在论坛中帮助大家答答问题,可以说是一种娱乐吧,也许你们并不认同。 由于回答的帖子比较多,因此专家分也长的比较快。有些网友说我抢分,蹭分。呵呵,我想我也不能完全否认,从一个刚接触的新人来说,看着专家分的增加,确实从某种角度来说,满足了自己的一些虚荣心。感觉自己是个高手了,有些飘飘然。 其实,仔细看看自己得分的帖子,得分率大于50%的不多,有些根本就没有能够正确回答网友的问题。现在回头看看,感觉很惭愧。由于自己一直就是从事图形和界面方面的工作,所以 ...
【实现功能】当鼠标在视图区移动时,在鼠标附近同步显示鼠标所在的坐标位置。这个功能,对许多网友来说并不复杂。简单的办法是在OnDraw中绘制坐标位置就可以了。本文的实现思路是在不调用视图刷新以及不覆盖视图上原有内容的基础上实现鼠标坐标的跟踪显示。 【实现方法】 1。鼠标移动前,计算显示的鼠标坐标字符串所要占的矩形位置。 2。将视图中这个位置的图像复制备份, 3。在视图上绘制坐标 4。鼠标下次移动时,在上次的位置上恢复保存的图像。 【实现代码】 若干常量定义: #define WORD_HEIGHT 18 //数字的高度,根据系统的字体调整#define WORD_WIDTH 7 / ...
【作者按】本文主要针对初学者在使用对话框赋值时的一些问题而写。如果你对对话框的使用已经很熟练,请跳过本文。【针对现象】许多初学者,常常写出这样的程序来修改对话框中某个按钮的标题:CMyDialog dlg;dlg.m_Btn.SetWindowText("MyButton");其中m_Btn的定义为CButton m_Btn;这段程序运行后会抱错,debug一下,错误会指向一个断言语句ASSERT(::IsWindow(m_hWnd));报告窗口指针为空。看一下m_hWnd,等于0x00000000.其实就是m_Btn这个CButton对象的句柄为空。【原因分析】出现这种错误 ...
[作者按]CTreeCtrl树型控件的检查框,并没有直接的点击消息。也就是说,当我们点击检查框时,没有直接对应的消息映射。不知道是微软故意所为还是什么原因。笔者个人认为可能是微软只是想把检查框作为一个静态的标识吧。 ...
贝赛尔曲线的拆分是指将贝赛尔曲线分解成逼近的多边形。可以用来判断贝赛尔曲线的选中,以及显示贝赛尔曲线的旋转效果等。 贝赛尔曲线简单介绍: 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。所以本函数的顶点数组的记录方式是:控制点+顶点+控制点+控制点+顶点+控制点+……。所以两个顶点之间的曲线是由两个顶点以及两个顶点之间的控制点来决定的。 ===主函数PolyBezierToPolys=== 【主要类型申明】 typedef CArray<CPoint,CPoint> CPtArray;//点动态数组类型 【参数说明】 bezierPts[in] ...
BOOL CMp3PlayerDlg::OnInitDialog()//初始化函数 { ?????? m_DlgStyle.sTitleName = "音乐播放器";//设定标题 ?????? COwnerDrawDialog::OnInitDialog(); ?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ?????? // Set the icon for this dialog.? The framework does this a ...
【实现内容】自动循环播放的MP3播放器 【应用】自动循环播放的MP3播放器主要用于企业文化的应用。在每天的休息时段,播放器自动循环播放指定的MP3音乐。本自动播放器主要根据本公司的情况编写,包括早上上班,中午吃饭和下午下班三个时间段各播放1小时左右的音乐。播放器启动后,只在托盘中有图标,配置好各个时间段的音乐目录后,不需要人工干预,音乐可以自动启动、循环播放和结束。现已在本公司使用。 【特点】本软件用到许多常用的技巧: 1.? 目录选择对话框 2.? 文件选择对话框中的多个文件类型过滤设定 3.? 应用程序在任务栏上隐藏,而在托盘上显示图标 4.? 进度条的制作 5.
Global site tag (gtag.js) - Google Analytics