文章分类 -  C++!

摘要:* 使用libcurl 宏: 如果使用静态须定义CURL_STATICLIB 库: libcurl.lib ws2_32.lib wldap32.lib 头文件: easy.h/multi.h等。* (解决方案)静态lib多层次的依赖:(A依赖B ,B依赖C) 一般来说,B不必指定依赖的C,只需包含用到的类所在的头文件即可,而C直接在A里面指定即可。 成功案例: FreeSquare本身是一个dll工程(动态库),依赖于Scan_Fix功能库(静态lib库),Scan_Fix内部实现则依赖libcurl库(静态lib库)。 Scan_Fix内部的相关设置: #define CUR... 阅读全文
posted @ 2014-03-27 15:20 Tup 阅读(615) 评论(0) 推荐(0)
摘要:http://msdn.microsoft.com/zh-cn/library/ms235627.aspx 此分步演练演示如何创建用于 C++ 应用的静态库(一个 .lib 文件)。 使用静态库是重用代码的一种绝佳方式。 你不必在要求功能的每个应用中重新实现同一例程,而只需将其写入静态数据库一次,然后从应用引用它们即可。 从静态库链接的代码成为了应用的一部分,这样你就不必安装另一个文件来使用代码。 本演练涵盖以下任务: 创建静态库项目 向静态库添加类 创建引用静态库的控制台应用 在应用中使用静态库的功能 运行应用 系统必备 你需要了解 C++ 语言的基础知识。 创建静态库项目 ... 阅读全文
posted @ 2014-03-26 12:03 Tup 阅读(248) 评论(0) 推荐(0)
摘要:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx此分步演练演示如何创建用于 C++ 应用程序的动态链接库 (DLL)。 使用库是重用代码的一种绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程写入一次,然后从需要该功能的应用程序引用它们即可。 通过将代码放入 DLL,您节省在引用它的每个应用程序的空间,而且,您可以更新 DLL,而无需重新编译所有应用程序。 有关 DLL 的详细信息,请参见 Visual C++ 中的 DLL。 本演练涵盖以下任务: 创建 DLL 项目。 添加类至 DLL。 正在创建使用加... 阅读全文
posted @ 2014-03-26 12:01 Tup 阅读(164) 评论(0) 推荐(0)
摘要:“文本操作”快捷键命令名快捷键说明编辑.折叠到定义Ctrl + M,Ctrl + O自动确定在代码中创建区域的逻辑边界(如过程),然后隐藏它们。编辑.注释选定内容Ctrl + K,Ctrl + C使用编程语言的正确注释语法将代码的当前行标记为注释。(vc2003)编辑.完成单词Ctrl + j Alt + 向右键显示基于当前语言的“完整单词”。(vc2003)编辑.删除Delete删除光标右侧的一个字符。编辑.向后删除Backspace Shift + Backspace删除光标左侧的一个字符。编辑.删除水平空白Ctrl + K,Ctrl + \折叠所选内容中的空白;如果没有所选内容,则删除光 阅读全文
posted @ 2014-03-13 17:26 Tup 阅读(156) 评论(0) 推荐(0)
摘要:发现并强调的一个地方:带view的sdi工程,OnPaint函数在view文件中实现;不带view的在MainFrm中实现。目前发现的gdiplus绘制不起作用的原因:1.没有使用CPaintDC(BeginPaint(); EndPaint();获取窗口无效区域)2.可能工程含有view文件,这时要在view文件中的OnPaint方法内实现,如果在MainFrm文件中写则不会work【1】新建ATL/WTL工程-->SDI-->使用默认完成即可(包含了Rebar、CommandBar等组件和view文件,可以研究下代码)【2】在Stdafx.h文件中添加代码: #include 阅读全文
posted @ 2014-03-12 13:03 Tup 阅读(256) 评论(0) 推荐(0)
摘要:首先感觉这段代码挺实用的:INTSIZEOF 宏,获取类型占用的空间长度,最小占用长度为int的整数倍:#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) ) //这个技巧常用到VA_START宏,获取可变参数列表的第一个参数的地址(ap是类型为va_list的指针,v是可变参数最左边的参数):#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )VA_ARG宏,获取可变参数的当前参数,返回指定类型并将指针指向下一参数 阅读全文
posted @ 2014-03-02 18:53 Tup 阅读(497) 评论(0) 推荐(0)
摘要:宽窄字符的转换对于C++专业户来说是经常的动作。一般两种比较方便的方法:1. C++:WideCharToMultiByte MultiByteToWideChar; C语言提供的转换函数为mbstowcs()/wcstombs()2. C++:A2W W2A (USES_CONVERSION)3. (追加)CStringA CStringW 之间仅用一个"="就完成了转换 神奇的很!!Love CString, Love Programming!Method 1: #include Method 2: #include 且使用A2W/W2A前一定要写USES_CONVER 阅读全文
posted @ 2014-02-28 10:53 Tup 阅读(2271) 评论(0) 推荐(0)
摘要:YKCW6-BPFPF-BT8C9-7DCTH-QXGWCRBCXF-CVBGR-382MK-DFHJ4-C69G8 YQ7PR-QTHDM-HCBCV-9GKGG-TB2TMReference: http://wenku.baidu.com/link?url=z8Y17Vpu7KdjszgoHMafsYvgFjTqNwTezc6cyqT0Yd51B00V3sLWXtmJtoyTXZskx-etcvNvWEYTq2LdoZZs7VNVxtzy0Day0MsjFrZtBJO 阅读全文
posted @ 2014-01-24 18:11 Tup 阅读(164) 评论(0) 推荐(0)
摘要:使用这个控件功能倒是实现了,就是API有些不太友好,而且用户还需要指定rcOffset之类的细节东东,有时间需要改改。创建Expandable Item Group的方法:(API有些诡异) //ATL::_U_MENUorID m_DllErrList->Create(m_hWnd, &rcList, NULL, WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER | LVS_OWNERDRAWFIXED, 0, 0U, NULL); ... 阅读全文
posted @ 2014-01-21 15:15 Tup 阅读(377) 评论(0) 推荐(0)
摘要:1.C语言运算符优先级运算符按照优先级大小由上向下排列,在同一行的运算符具有相同优先级。第二行是所有的一元运算符。运算符解释结合方式() []-> .括号(函数等),数组,两种结构成员访问由左向右! ~ ++ -- +-* & (类型) sizeof否定,按位否定,增量,减量,正负号,间接,取地址,类型转换,求大小由右向左* /%乘,除,取模由左向右+-加,减由左向右>左移,右移由左向右=>小于,小于等于,大于等于,大于由左向右==!=等于,不等于由左向右&按位与由左向右^按位异或由左向右|按位或由左向右&&逻辑与由左向右||逻辑或由左向右?: 阅读全文
posted @ 2014-01-08 09:43 Tup 阅读(761) 评论(0) 推荐(0)
摘要:实际情况中,经常会用到两个相互访问的类,当然这种情况最好能避免,但有时候是必须的。一种情景:Manager要安排一些任务给Worker,但Worker工作起来是异步模式的(Manager安排完任务就去忙别的事情了,不会等待Worker工作完成),Worker需要在任务完成后通知Manager以便Manager能够掌握公司的总体运营情况。技术实现:如果是窗口的话,可以给各自关联的句柄SendMessage,但大多数情况下,Manager和Worker都是功能类,没有句柄的。如果头文件相互包含,编译器会报错的。耍点小聪明吧:Manager.h中包含Worker.h 并且Manager的成员包括几个 阅读全文
posted @ 2013-12-18 13:58 Tup 阅读(700) 评论(0) 推荐(0)
摘要:要测试本地机器是大头还是小头,下面的方法不可行:1.左右移位运算2.指针强转(大转小)究其原因,内部编译器的设计是“揣摩了用户意图”的看来,使用Union才是正确的。我的机器是AMD的,LittleEndian,返回Big的都是不正确的:char* GetEndian(){ int i = 0xa0b0c0d; int iHigh = i>>24;//内部已经做过处理了 因为要按照用户本来的意愿工作 就得看char[]的内部存储方式 if(iHigh == 0xa) return "Big Endian"; else if(iHigh == 0xd) ... 阅读全文
posted @ 2013-12-18 12:52 Tup 阅读(480) 评论(0) 推荐(0)
摘要:void main(){ wcout.imbue(std::locale("chs")); //设置语言区域为中国 wchar_t *ws = L"我是中国人"; wcout<<ws<<endl; wchar_t wc =L'中'; wchar_t *find = wcschr(ws,wc); wcout<<*find<<endl; wcout<<find<<endl; system("pause");}我是中国人中中国人请按任意键继续. . . 阅读全文
posted @ 2013-12-14 17:00 Tup 阅读(1271) 评论(0) 推荐(0)
摘要:Because this is better.因为在做一个项目的过程中,发现当push_back进大约24个左右WCHAR*到vector里面后,vector就开始成为乱码了。改成std::vector则几百个都没有出现问题。出现问题的代码类似:... GetWinDir(cWinDir); if(cWinDir.IsEmpty()) { ++nCount; continue; } cWinDir += lpszFilePath; cWinDir += lpszFil... 阅读全文
posted @ 2013-12-10 17:00 Tup 阅读(625) 评论(0) 推荐(0)
摘要:参考博客地址:http://sochao.lofter.com/post/c5106_194cda个人感觉,m_hWnd是所有从CWnd继承下来的窗口类都会有的一个成员变量,代表本窗口的句柄;this就是一个对象的指针,如果这个对象就是一个窗口,那么*this应该和m_hWnd一样吧。测试代码: m_wndVertSplit.Create ( *this/*m_hWnd*/, rcDefault, NULL,dwSplitStyle, dwSplitExStyle );结果一样。此时的看法比较肤浅,以后有时间dig一下。不过,通过这篇文章明白了:之所以静态成员函数不能访问非静态变量,是因为没有 阅读全文
posted @ 2013-08-07 12:25 Tup 阅读(229) 评论(0) 推荐(0)
摘要:进程间的通信方式智能指针GetMemory():主要考察变量的生存周期和函数传值问题constructorsocket数据结构及时间复杂度Your Perfect Soft 阅读全文
posted @ 2013-06-29 07:34 Tup 阅读(93) 评论(0) 推荐(0)
摘要:( SignToolDlg.OnInitDialog() ) 1 //self-construct Tab ctrl AND set default mode 2 CRect rect; 3 GetDlgItem(IDC_STATIC)->GetClientRect(&rect); 4 //rect.top+=10; 5 6 m_dlgClient.Create(IDD_DLG_CLIENT,GetDlgItem(IDC_STATIC)); 7 m_dlgServer.Create(IDD_DLG_SERVER,GetDlgItem(IDC_... 阅读全文
posted @ 2013-06-04 19:07 Tup 阅读(102) 评论(0) 推荐(0)
摘要:extern可以在某种程度上替代#include "*.h"参考:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html示例1:使用extern替代#include "*.h"CitedFile.h://pragma once#ifndef __CITEDFILE_H__#define __CITEDFILE_H__extern char g_szData[]; //声明全局变量g_szData,可能会有其他文件引用extern void g_func1();#endifCi 阅读全文
posted @ 2013-05-11 18:31 Tup 阅读(290) 评论(0) 推荐(0)
摘要:《C++高级编程》《Visual C++串口通信与工程应用实践》《葵花宝典-WPF自学手册》《C++多核编程》《Windows核心编程》《C++代码设计与重用》《提高c++性能的编程技术》《Visual C++并行编程实例》 阅读全文
posted @ 2013-05-11 10:14 Tup 阅读(118) 评论(0) 推荐(0)
摘要:注意的一点:断网-->"Activate/Register"-->"buy"or"activate"-->popup the OfflineActivate-->copy code1 and code2 to the Register-->"generate"-->copy backto the ActivateDlg-->SUC.上图:UltraEdit v19.00.1026下载与注册机作者:xiaoqing 发布:2013-03-28 23:36 分类:应用软件 阅读 阅读全文
posted @ 2013-04-30 14:30 Tup 阅读(3114) 评论(0) 推荐(0)