随笔分类 -  C++

摘要:struct timeval {time_t tv_sec; /* seconds */suseconds_t tv_usec; /* microseconds */};millisecond 毫秒microsecond 微秒timeval表示一个时间点,比如:timeval.tv_sec = 1 (s)timevat.tv_usec = 500 000 (μs) 阅读全文
posted @ 2012-06-06 18:12 Gang.Wang 阅读(671) 评论(0) 推荐(0)
摘要:这种问题都是数据文件 不存在 || 格式不正确 || 表错误 等,都属于数据完整性的问题。 阅读全文
posted @ 2012-05-24 14:55 Gang.Wang 阅读(1288) 评论(0) 推荐(0)
摘要:获取省略号指定的参数在函数体中声明一个va_list,然后用va_start函数来获取参数列表中的参数,使用完毕后调用va_end()结束。像这段代码:voidTestFun(char* pszDest, int DestLen, const char* pszFormat, ...){va_listargs;va_start(args,pszFormat);_vsnprintf(pszDest, DestLen, pszFormat,args);va_end(args);}4.va_start使argp指向第一个可选参数。va_arg返回参数列表中的当前参数并使argp指向参数列表中的下一个 阅读全文
posted @ 2012-01-04 21:00 Gang.Wang 阅读(513) 评论(0) 推荐(0)
摘要:C++的auto_ptr auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。   1 构造函数与析构函数 auto_ptr在构造时获取对某个对象的所有权(ownership),在析构时释放该对象。我们可以这样使用auto_ptr来提高代码安全性: int* p = new int(0); auto_ptr<int> ap(p); 从此我们不必关... 阅读全文
posted @ 2010-11-19 14:46 Gang.Wang 阅读(2708) 评论(2) 推荐(1)
摘要:error C2850: 'PCH header file' : only allowed at file scope; may not be in a nested construct这种错误一般是大意导致的,比如你的类声明的后面忘了分号, 或者大括号不配对引起的 阅读全文
posted @ 2010-11-11 11:10 Gang.Wang 阅读(1981) 评论(0) 推荐(0)
摘要:方法一:  当用户点击窗体的时候欺骗系统,用户是点在标题栏上,这样就完成了无标题栏窗体的拖动,实现如下:  在 MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTest) 这个函数的方法里 :  LRESULT CNyWnd::OnNcHitTest(UINT uMsg, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandl... 阅读全文
posted @ 2010-10-21 10:57 Gang.Wang 阅读(431) 评论(0) 推荐(0)
摘要:TrackMouseEvent函数TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。函数执行成功的话返回非零值(true),否则返回零(false)... 阅读全文
posted @ 2010-10-20 16:41 Gang.Wang 阅读(2786) 评论(0) 推荐(0)
摘要:在网上看到张图,和大家分享一下,大家可以一下: 阅读全文
posted @ 2010-09-23 03:12 Gang.Wang 阅读(767) 评论(0) 推荐(0)
摘要:原文:http://www.cnblogs.com/greenerycn/archive/2010/09/20/REG_OPTION_VOLATILE.html今天遇到一个bug,折腾了半天才解决掉,分享给大家。Bug描述一位开发人员调用下面的代码来创建一个注册表键值:执行后,成功的在注册表编辑器中看到了键值,后续从中获取值等代码没有任何问题。提交测试后发现,当系统重启后,上面的程序创建的注册表键... 阅读全文
posted @ 2010-09-20 22:17 Gang.Wang 阅读(721) 评论(0) 推荐(0)
摘要:[代码]使用方法:class CWnd : public CLayered<CFloatWnd>{LRESULT CWnd::OnInitDialog( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/ ){ SetTransparent( 100 ); }} 阅读全文
posted @ 2010-09-15 11:22 Gang.Wang 阅读(401) 评论(0) 推荐(0)
摘要:我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下: 通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口。 一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP。在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动。 注意,拖动标题栏移动窗口的时候... 阅读全文
posted @ 2010-09-12 14:31 Gang.Wang 阅读(31286) 评论(22) 推荐(6)
摘要:MSG_WM_CREATE LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct); MSG_WM_INITDIALOG LRESULT OnInitDialog(HWND hWnd, LPARAM lParam); MSG_WM_COPYDATA LRESULT OnCopyData(HWND hWnd, PCOPYDATASTRUCT pCopyData... 阅读全文
posted @ 2010-09-12 14:07 Gang.Wang 阅读(3350) 评论(0) 推荐(1)
摘要:首先必须是添加了一个ATL控件,生成了相应的类了。 1,包含头文件 #include <atlctrls.h> 2,定义资源ID #define IDC_BTN_PLAY 6000 3,在类声明中定义成员。 CButton m_btnPlay; 4,在WM_CREATE消息中 RECT rc1; rc1.left = 60; rc1.top = 0; rc1.bottom = rc1.... 阅读全文
posted @ 2010-08-18 23:04 Gang.Wang 阅读(507) 评论(0) 推荐(0)
摘要:找了很多,介绍一个比较简单的,原来是MFC的我改成了非MFC的,使用方法: m_image = new ImageEx( L"d:\\loading.gif" ); CRect rc; GetClientRect(rc); int cx = (rc.Width() - m_image->GetWidth()) / 2; m_image->InitAnimation(m_hWnd, CP... 阅读全文
posted @ 2010-08-16 16:11 Gang.Wang 阅读(5887) 评论(3) 推荐(0)
摘要:HANDLE hFile = CreateFile(fileName.c_str(), FILE_ALL_ACCESS, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);     if (hFile == INVALID_HANDLE_VALUE)    ... 阅读全文
posted @ 2010-08-05 22:25 Gang.Wang 阅读(1078) 评论(0) 推荐(0)
摘要:看了看MSDN里的一个关于IActiveDesktop例子:   // ActiveDesktopTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Objbase.h> #include <Unknw... 阅读全文
posted @ 2010-07-07 23:15 Gang.Wang 阅读(316) 评论(0) 推荐(0)
摘要:面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展。按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上,也可以运行在不同的机器上。为了实现这样的应用软件,组建程序和组建程序之间需要一些极为细致的规范, 只有组件程序遵守了这些共同的规范,然间系统才能正常运行。为此,OMG和Microsoft分别提出了COR... 阅读全文
posted @ 2010-07-03 21:50 Gang.Wang 阅读(289) 评论(0) 推荐(0)
摘要:先从最简单的地方入手,废话省去,直接开始: 1、我用的是vc2005, 新建一个win32工程, 新建一个clsid.h的文件: #include <Unknwn.h> // {B73A1FEA-0FCF-4b67-87F9-19EC95B1901A} static const GUID WG_TEST_CLSID = { 0xb73a1fea, 0xfcf, 0x4b67, { 0x... 阅读全文
posted @ 2010-07-01 19:37 Gang.Wang 阅读(330) 评论(0) 推荐(0)
摘要:最近数字和金山吵的热火朝天的,群里有人说网友的投票可能有工具刷出来的,觉得应该很有意思,就想自己试一下,玩了半天终于可以操作页面进行投票了,但这个投票做了IP限制,所以工具也无用武之地啊!典型的需求没做好,反正也是自己玩,把过程记下来下给自己备忘一下: 阅读全文
posted @ 2010-06-05 11:56 Gang.Wang 阅读(4059) 评论(0) 推荐(1)
摘要:关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: 那么实际使用中会出现下面所示的替换过程: 这样每次divider(除数)为0的时候便会在标准错误流上输出一个提示信息。而##被称为连接符(concatenator),用来将两个Token连接为一个Token。... 阅读全文
posted @ 2010-04-04 23:10 Gang.Wang 阅读(457) 评论(0) 推荐(0)