01 2014 档案

摘要:在开发中,需要判断是否有网络连接,于是写了个函数,实现代码如下://判断是否有网络连接static BOOL DoHaveInternetConnection(){ BOOL bRet = FALSE; // 如果函数返回FALSE,则肯定没有连接 DWORD dwFlag; __try { if (InternetGetConnectedState(&dwFlag, 0)) { // 必须有下列任意一种连接,才认为是有连接 // 因为INTERNET_CONNECTION_CONFIGURE... 阅读全文
posted @ 2014-01-26 10:41 Jamy Cai 阅读(701) 评论(0) 推荐(0)
摘要:1.STDMETHOD_(ULONG, AddRef)() PURE;STDMETHOD_:定义一个返回指定类型的虚方法,STDMETHOD:定义一个返回HRESULT类型的虚方法, PURE : = 0;即 纯虚函数。STDMETHODIMP:定义了一个返回HRESULT的接口函数。 #define STDMETHODIMP HRESULTSTDMETHODCALLTYSTDMETHODIMP_:定义了一个返回指定类型的接口函数。 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE2.__declspec(novtable) :就是让类不.. 阅读全文
posted @ 2014-01-20 17:43 Jamy Cai 阅读(746) 评论(0) 推荐(0)
摘要:__stdcall 与 __cdecl:__cdecl,__stdcall是声明的函数调用协议.主要是传参和弹栈方面的不同.一般c++用的是__cdecl,windows里大都用的是__stdcall(API)__cdecl是C/C++和MFC程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定 时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用 __cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。 阅读全文
posted @ 2014-01-20 17:39 Jamy Cai 阅读(288) 评论(0) 推荐(0)
摘要:发送端:新建一个基本对话框工程,添加6个文本框控件,并且关联控件变量(CString类型):m_strCopyData, m_strFileMap, m_strMem,m_strRegMsg, m_strUserMsg, m_strClipBoard然后在 CPP 文件里面,做如下定义:#define BUFFER_SIZE0x100 // 用内存地址通信时分配的最大内存.#define WM_COMMWM_USER+100const UINTwm_nRegMsg=RegisterWindowMessage("reg_data");const UINTwm_nMemMsg= 阅读全文
posted @ 2014-01-20 17:37 Jamy Cai 阅读(455) 评论(0) 推荐(0)
摘要:(1) 线程的创建:(主要以下2种)CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID lParam, int nPriority =THREAD_PRIORITY_NORMAL, UINT nStackSize= 0, DWORDdwCreateFlags = 0, LPSECURITY_ATTRIBUTESlpSecurityAttrs = NULL );HANDLECreateThread( LPSECURITY_ATTRIBUTESlpThreadAttributes, // SD SIZE_T... 阅读全文
posted @ 2014-01-20 17:34 Jamy Cai 阅读(425) 评论(0) 推荐(0)
摘要:1. 工具:1.1设备环境类:Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需 要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括:Drawing-Attribute Functions:绘图属性操作,如:设置透明模式Mapping Functions:映射操作Coordinate Functions:坐标操 阅读全文
posted @ 2014-01-20 17:33 Jamy Cai 阅读(2570) 评论(0) 推荐(0)
摘要:在VC++开发中,经常会用到string和wstring,这就需要二者之间的转换,项目中封装了wstring和string相互转换的2个函数,实现如下://将wstring转换成stringstd::string ConvertWStringToAnsi(std::wstring wstr){ std::string result; int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL); if( len <= 0 ) return result; char* buf 阅读全文
posted @ 2014-01-20 16:44 Jamy Cai 阅读(2476) 评论(0) 推荐(0)
摘要:第一步:打开VS2010项目的SLN文件有如下代码:Microsoft Visual Studio Solution File, Format Version 11.00# Visual Studio 2010将之改为:Microsoft Visual Studio Solution File, Format Version 10.00# Visual Studio 2008第二步:打开VS2010项目的 .csproj和.csproj.user文件的开头会有如下代码:ToolsVersion="4.0"将之改为:ToolsVersion="3.5"完成 阅读全文
posted @ 2014-01-20 16:07 Jamy Cai 阅读(273) 评论(0) 推荐(0)
摘要:众所周知,VC++响应回车键经常用的方法是利用BOOL PreTranslateMessage(MSG* pMsg) 截取回车键消息,如:if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_RETURN ){//处理回车键消息}但是 对于模态对话框,这种方法可能无效,这个时候,对于模态对话框有一种灵巧的方法,因为对话框程序的回车键都会响应OnButtonOk()这个函数,所以,可以添加ON_BN_CLICKED(IDC_BUTTON_OK,OnButtonOk) 来处理。 阅读全文
posted @ 2014-01-17 00:29 Jamy Cai 阅读(2445) 评论(0) 推荐(0)
摘要:最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了。。后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题。找到了问题所在,就好解决了,就是及时释放GDI对象。在创建GDI对象的时候,遵循以下规则:GetDC 得到的DC要用 ReleaseDCCreateCompatibleDC 要用 DeleteDC例如:BOOL CLogicChartCtrl::DrawBmp( CDC* pDC, CRect rect, HBITMAP hBitmap ){ BITMAP bm; GetObject(hBitmap. 阅读全文
posted @ 2014-01-13 13:23 Jamy Cai 阅读(4018) 评论(0) 推荐(1)
摘要:vc中获取windows版本信息,一般是调用GetVersionEx 这个API函数来获取的,这个API需要OSVERSIONINFOEX 这个结构体作为参数,OSVERSIONINFOEX 的对应的具体的OS版本类型详细如下:Operating systemVersion numberdwMajorVersiondwMinorVersionOtherWindows8.16.3*63OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATIONWindows Server2012R26.3*63OSVERSIONINFOEX.wProductType != 阅读全文
posted @ 2014-01-10 15:45 Jamy Cai 阅读(5465) 评论(1) 推荐(0)
摘要:在VC++中,要实现对回车键的响应实现,一般通过截获消息来响应,即通过处理BOOL PreTranslateMessage(MSG* pMsg)这个函数来处理实现如下:BOOL PreTranslateMessage(MSG* pMsg){ if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN ) //屏蔽ALT+F4{ //处理响应回车键后的动作} return __super::PreTranslateMessage(pMsg);} 阅读全文
posted @ 2014-01-10 13:07 Jamy Cai 阅读(2013) 评论(0) 推荐(0)
摘要:在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:1。声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。2。声明一个响应函数afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);用于响应鼠标操作。将这个函数放入Dlg类的声明中,作为Dlg类的一个成员。3。自定义消息,用于点击托盘 来响应的消息:定义消息名称和消息 阅读全文
posted @ 2014-01-08 11:16 Jamy Cai 阅读(3500) 评论(0) 推荐(0)
摘要:1.1WS_CLIPCHILDRENWS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口。MSDN里的E文解释:Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.读E文是一件困难的事,为了不让大家再重复我的痛苦,我就越俎代庖翻译一下:WS_CLIPCHILDREN样式主要是用于父窗口,也就是说当在父窗口绘制的时候,父窗口上还有一个 阅读全文
posted @ 2014-01-02 16:06 Jamy Cai 阅读(806) 评论(0) 推荐(0)