- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 SYSTEMTIME变量进行比较差值得到天数
CTime t1(sys_time1); CTime t2(sys_time2); CTimeSpan ts = t2 - t1; UINT nTotalDays = ts.GetTotalHours() / 24; ———————————————————————————————————————— win32下不支持CTime,win32下代码:——————————————————————————
2009-07-31 14:54:00 3312
转载 使窗口透明
#define LWA_COLORKEY 0x00000001 // Use color as the transparency color.#define WS_EX_LAYERED 0x00080000#define LWA_ALPHA 2 // Use bAlpha to determine the opacity of the layertypedef BOOL (WINAP
2009-07-29 11:12:00 476
原创 禁止程序多开,并将原程序带到前台
禁止程序多开,并将原程序带到前台 CString strMutexName = "MySingleInstance"; HANDLE hMutex = CreateMutex(NULL,FALSE,strMutexName); if ( hMutex ) { if ( ERROR_ALREADY_EXISTS == ::GetLastError() ) {//如果已有先前的实
2009-07-29 11:10:00 622
转载 打开文件对话框与目录选择对话框
打开文件对话框与目录选择对话框 打开文件对话框const char pszFilter[] = _T("EXE File (*.txt)|*.txt|All Files (*.*)|*.*||");CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, pszFilter, this);
2009-07-29 10:36:00 527
转载 设置revc()的等待超时时间
#include #include #define TCP#pragma comment(lib,"ws2_32.lib")int main( int argc ,char* argv[]){ WSAData wsaData; WSAStartup(WINSOCK_VERSION,&wsaData); DWORD begin,finish; struct timeval tv;
2009-07-29 10:30:00 690
转载 windows消息大全
windows消息大全 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做T
2009-07-29 10:28:00 310
转载 windows消息机制
windows消息机制 一 Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。 二 Windows为当前执行的每个Windows程序维护一个「消息队列」。在发生输
2009-07-29 10:24:00 347
转载 无痛苦的软件维护——被遗忘的需求(软件工程方面)
先说一个小笑话。有一个生产队队长,他对专家说:“现在我们生产队的地越来越多,牛越来越忙不过来了。我想要这么一种牛,他吃的草和普通牛一样多,但是干的活是普通牛的十倍。”专家说:“这种牛是可以造出来的,现在有基因工程。”队长说:“好吧,你给这造几头这样的牛。”于是专家找到了生物实验室,让生物实验室的人搞一个基因工程,把牛造出来。于是工程浩大,投资无法保证,合作多半是不愉快的收场。 现实世界里很多人分
2009-07-29 10:21:00 338
原创 重载(overload),覆盖(override),隐藏(hide)的区别
重载(overload),覆盖(override),隐藏(hide)的区别 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其
2009-07-29 10:20:00 540
原创 使用MFC提供的Http类下载和上传文件
bool Download(const CString& strFileURLInServer, //待下载文件的URL const CString & strFileLocalFullPath)//存放到本地的路径 { ASSERT(strFileURLInServer != ""); ASSERT(strFileLocalFullPath != ""); CInternetSession se
2009-07-29 10:17:00 1137
原创 让List Control有Check Box 和 让List Box有Check Box
1.让List Control有Check Box 用SetExtendedStyle方法可以设置,看代码:(CListCtrl m_ListCtrl;)DWORD dwStyle = m_ListCtrl.GetStyle();dwStyle |= LVS_EX_CHECKBOXES;m_ListCtrl.SetExtendedStyle(dwStyle);2.让List Box
2009-07-29 10:15:00 1664
原创 CString::GetBuffer与ReleaseBuffer的用法
这是一个非常容易被用错的函数,主要可能是由于大家对它的功能不太了解。其实点破的话,也不是那么深奥。 GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法。它和被重载的操作符LPCTSTR还是有点本质区别的,LPCTSTR是直接返回一个只读内存的指针,而GetBuffer则是返回一个可以供调用者写入的内存,并且,你可以给定大小。下面是个简单的,但也
2009-07-23 10:55:00 829
原创 利用自定义消息处理函数的WPARAM或LPARAM参数传递指针
有自定义消息:#define WM_TEST WM_USER+121 消息处理函数:afx_msg void OnTest(WPARAM wParam,LPARAM lParam); 该消息是一个主线程向辅助线程发送数据的消息。主线程中发送消息的代码: m_param.pDoc=pDoc; m_param.pSpecAnlyz=m_pSpecAnlyz; //
2009-07-23 10:11:00 7290
原创 VC中CString和WPARAM之间的相互转换(结构体变量和WPARAM之间的转换)
1 CString作为WPARAM进行传递 这种情况经常出现在自定义消息的发送语句中,将CString类型的变量作为WPARAM进行传递.直接将CString强制转化成WPARAM是不行的,正确的方法是这样的(将红色字体部分用你的消息和变量进行替换): SendMessage(WM_SELCHANGE, (WPARAM)lBoxSelText.GetBuf
2009-07-22 17:15:00 7744
转载 复制数组(
复制数组(图) 5.4.3 复制数组因为数组是引用类型,所以将一个数组变量赋予另一个数组变量,就会得到两个指向同一数组的变量。而复制数组,会使数组实现ICloneable接口。这个接口定义的Clone()方法会创建数组
2009-07-20 11:32:00 960
原创 c++选取目录
C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->CString GetDirPath(){ CString strPath = ""; BROWSEINFO bIn
2009-07-15 16:29:00 545
转载 INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTS
2009-07-14 13:29:00 566
原创 一段痛苦与煎熬的过程
近两个月了,心情无法得到平静,该面对的还将面对,在对与错的面前,也许只有等以后去评判了,今年却实有许多的不顺,经历了那么多事情,反而使自已变得优柔寡断起来了,今天,终于不得面对了.其实在机会来临,又去放弃机会的同时,这是个非常用痛苦的事情.希望这一次作出的决定是正确的吧.这么多年来.在职业的定位上总是交错不定,为了生存而放弃了好多的原则,背弃了自已心中长远的目标和那份坚持.也许跟朋友同学他们聊起这
2009-07-13 09:26:00 783
原创 多线程编程
多线程编程之一——问题提出一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() {
2009-07-10 11:55:00 600
转载 消息与消息队列
About Messages and Message Queues 基于windows的应用程序是事件驱动的。它们不进行明确的函数调用(比如调用C运行库)来获得输入。取而代之的是他们等待操作系统将输入传递给他们。 操作系统传递所有的输入给各种应用程序。每个window有一个函数叫做窗口过程,只要有输入操作系统就调用他们。窗口过程处理输入后,将控制返回给操作系统。详细资料请看窗口过程
2009-07-10 11:50:00 415
转载 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点 使用多线程技术可以显著地提高程序性能,本文就讲讲在程序中如何使用工作线程,以及工作线程与主线程通讯的问题。 一 创建线程 使用MFC提供的全局函数AfxBeginThread()即可创建一个工作线程。线程函数的标准形式为 UINT MyFunProc(LPVOID );
2009-07-09 16:50:00 604
原创 VC中CList用法及其成员的使用
VC中CList用法及其成员的使用收藏 初学mfc者,往往对CList等mfc的Collect类的使用感到迷惑,在使用中经常会遇到许多问题,导致对vc中的Collect类的使用产生了惧怕。以下,就个人经历而言,告诉大家如何使用CList。CList是一个双向链表类。 1、头文件名不可少Clist类定义在Afxtempl.h 头文件中,因此在使用该类时,需要加这个头文件名。
2009-07-09 15:56:00 676
原创 CreateEvent和SetEvent函数
Windows API一日一练(45)CreateEvent和SetEvent函数当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的。这样就带来了一个问题,在那个死循环里要找到合适的条件退出那个死循环,那么是怎么样实现它的呢?在Windows里往往是采用事件的方式,当然还可以采用其它的方式。在这里先介绍采用事件的方式来通知从线程运行函数退出来,它的实现原理是这样,在那个死
2009-07-09 15:35:00 588
转载 WaitForSingleObject
WaitForSingleObject WaitForSingleObject的用法 WaitForSingleObject的用法 DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); 参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有
2009-07-09 11:28:00 546
原创 C++内存泄漏
C++没有垃圾回收机制,所以内存泄漏应该是程序员很关心的问题。所谓的内存泄漏就是用动态变量机制new了一段内存空间,以后不再需要这个变量的时候没有delete它,或者在没有delete之前,指针又指向了另外一个地址,这样先前的空间就丢失了。内存泄漏最典型的情况就是在函数中申请了一段动态空间,在函数返回前就没有delete它,造成内存泄漏。 此外对new操作的失败检查也是一个良
2009-07-07 18:01:00 396
原创 多线程编程实例----服务器客户端简单通信
这是一个非常简单的通信程序,不需要什么前奏来说明这个问题,可以直接来看程序的实现,首先是服务器端的程序:int main(int argc, char **argv){ WSADATA wsd; SOCKET sListen, sClient; int iAddrSize; HANDLE hThread; DWORD dwThread; struct sockaddr_
2009-07-07 17:54:00 716
转载 期待已久的UI多线程编程
终于到了期待已久的UI多线程编程了,这个例子的效果很好,从中也学到了一些东西,我曾经就没有想到过将一个窗口分成几个部分,然后分别用不同的线程去控制这些部分的显示,看了这个例子以后就知道了,是不是在重绘窗口的时候也是采用了这个办法呢?也许吧。先来看看这个例子的主界面: 值得一提的是,这是一个win32 application的例子,不过也许在这样的框架下实现这
2009-07-07 17:52:00 800
转载 多线程编程实例----多线程同时排序
这是有趣的程序,是采用多线程使用多种排序算法同时进行排序,下面是主界面的截图: 想一想,这个程序的思路是非常简单的,无非就是开5个线程,然后每个线程的入口函数分别对应一个排序算法就可以了,然后如果用户选择的是单线程的话,那么就让这几种排序算法串行执行就可以了。但是应该注意一个问题,怎么去计时?单线程的好说,那么多线程的呢?答案在于WaitForMultipl
2009-07-07 17:48:00 4926 3
转载 多线程编程实例----线程同步之互斥量
互斥量和临界区差不多的,但是比临界区好理解,而且互斥量可以用于进程间的同步,所以我个人还是觉得相比于临界区而言,互斥量更加易用些。 其实这个演示程序的代码和前面使用临界区的代码差不多了,还是来简单的看一下吧:int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
2009-07-07 17:46:00 686
转载 多线程编程实例----线程同步之事件
事件的使用也是非常简单的,事件与互斥变量的区别可以理解为:互斥变量是用来对控制队数据的访问的,但是事件是用来发出一个信号表示某个操作已经完成了。当然可以有这样的理解区别,不过在这个演示程序中,看不出使用上的差别,不过没关系,这里只是教我们怎么去使用事件机制同步线程。 //thread1DWORD WINAPI WriteProc(LPVOID pParm){ DWORD dw
2009-07-07 17:44:00 422
转载 如何从DC中取出Bitmap以完成图象抖动
这两天一直被如何从一个图象抖动的问题所困扰, 想了两天, 调试了两天终于搞明白了. 问题是这样的,我已知图象每个点的数据, 并且已经有在dc上绘制成图象的代码, 开始我的想法是从DC上得到Bitmap以完成图象抖动. 后来发现这种思路不对. 因为当前只有1个打印机dc, 我无法创建一个24位的dc从而创建内存位图, 选到内存dc中, 然后在内存dc中绘图. 可能你会说为什么不用打印机
2009-07-07 17:26:00 1866
转载 网管和黑客都必须知道的命令
网管和黑客都必须知道的命令 常用的几条NET命令: (与远程主机建立空管连接) net use //IP地址/ipc$ "" /use:"" (以管理员身份登录远程主机) net use //IP地址/ipc$ "密码" /use:"Administrator" (传送文件到远程主机WINNT目录下)copy 本机目录路径/程序 //I
2009-07-06 11:01:00 391
转载 C/C++ PING code
把SendARP部分换成ping功能函数就可以 其实不换也可以C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include stdio.h>#include windows.h>
2009-07-03 15:40:00 772
转载 CImageList使用指南
CImageList使用指南 1.综述在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储,该控件是不可见的。通常与其它如CListBox,CComboBox,CComboBoxEx以及CTabCtrl一起使用,为他们提供图标资源。图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以
2009-07-01 11:03:00 478
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人