随笔分类 -  C/C++

摘要:之前我们小组封装了一个memcached类库,里面有一个名为RemoveStartWith的方法可以根据起始字符串删除所有节点中负责键值规则的缓存项。它实现的原理就是通过stats命令获取每个节点的所有缓存键值然后逐一匹配。使用magent后这个方法就不起作用了,因为magent并不支持stats命 阅读全文
posted @ 2017-01-23 15:59 junchu25 阅读(241) 评论(0) 推荐(0) 编辑
摘要:1、Platform Toolset设置Visual Studio 2013 - Windows XP (v120_xp)。2、Character Set设置Use Multi-Byte Character Set。3、添加以下Preprocessor Definitions:NPRT_EXPORT... 阅读全文
posted @ 2014-07-24 17:29 junchu25 阅读(344) 评论(0) 推荐(0) 编辑
摘要:打开对应的Doxyfile,修改如下:1、OUTPUT_LANGUAGE =Chinese。2、INPUT_ENCODING =GB2312。 阅读全文
posted @ 2014-07-23 17:02 junchu25 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1、以View Code方式打开.rc文件。2、删除其中包含SS_REALSIZECONTROL定义的内容。3、在资源编辑器中打开.rc文件,重新设置Real Size Control的属性(不能在代码编辑器里重新添加SS_REALSIZECONTROL,否则问题会重现)。 阅读全文
posted @ 2014-05-30 11:11 junchu25 阅读(6572) 评论(0) 推荐(0) 编辑
摘要:两个项目libevent、memcached,Platform Toolset使用Visual Studio 2013 - Windows XP (v120_xp)。在编译memcached时会提示"inet_pton redefinition"。打开项目下的win32.h,将inet_pton函数... 阅读全文
posted @ 2014-05-13 16:12 junchu25 阅读(767) 评论(0) 推荐(0) 编辑
摘要:1、创建一个Visual C++的Empty Project,如果需要支持Windows XP将Platform Toolset设置为Visual Studio 2013 - Windows XP (v120_xp)。2、Configuration Type设置为Dynamic Library (.... 阅读全文
posted @ 2014-03-26 18:23 junchu25 阅读(4323) 评论(0) 推荐(0) 编辑
摘要:开发一个COM组件在Windows 7上注册成功,但是Windows XP SP3版本却导致regsvr32.exe进程挂起。用WinDbg查看发现提示:Break-in sent, waiting 30 seconds...WARNING: Break-in timed out, suspending. This is usually caused by another thread holding the loader lock竟然出现了加载锁,kb查看call stack:0:000> kbChildEBP RetAddr Args to Child ... 阅读全文
posted @ 2014-03-20 21:05 junchu25 阅读(1686) 评论(0) 推荐(0) 编辑
摘要:之前的一篇博客如何在Computer下添加System Folder里提到需要每次都使用一个新的guid,否则再次在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"下添加该键无法在Windows Explorer看到它。这个例子参考了Windows SDK部分内容,但是它不够完美无法为相应的文件夹添加一些额外的功能,且每次需要一个新的guid。下面给出一个更优化的方式:1、这个操作需要在三个注册表键下添加相同的内容:"HKEY_C 阅读全文
posted @ 2014-01-18 10:35 junchu25 阅读(890) 评论(4) 推荐(0) 编辑
摘要:当应用程序中调用TerminateProcess函数,对于在DllMain函数中处理DLL_PROCESS_DETACH的额外代码操作是无法被执行的。比如:释放资源、数据持久化等。 阅读全文
posted @ 2014-01-13 00:45 junchu25 阅读(613) 评论(0) 推荐(0) 编辑
摘要:1、注册自定义的UnhandledExceptionFilter,C/C++ Runtime Library下需要注意自定义handler被移除(hook kernel32.dll的SetUnhandledExceptionFilter使它返回一个空指针即可)。PTOP_LEVEL_EXCEPTION_FILTER v_prevUnhandledExceptionFilter;LONG WINAPI UnhandledExceptionHandler(EXCEPTION_POINTERS* ExceptionInfo);v_prevUnhandledExceptionFilter = :... 阅读全文
posted @ 2014-01-10 19:56 junchu25 阅读(713) 评论(0) 推荐(0) 编辑
摘要:time函数返回的time_t是一个utc时间且相对于1970年1月1日的total seconds,转换到DateTime只需以相同的方式转换回去即可。C/C++auto t = time(0);C#.NETvar t = (UInt32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);var dt = new DateTime(1970, 1, 1).AddSeconds(1384771739).ToLocalTime(); 阅读全文
posted @ 2013-11-18 21:32 junchu25 阅读(907) 评论(0) 推荐(0) 编辑
摘要:调用sqlite3_open函数默认创建的数据库encoding=UTF-8,执行sqlite3_exec时需要将对应的字符串转换为UTF-8格式多字节字符串。比如:sqlite3* db;auto retVal = sqlite3_open("test.db", &db);char* pErrMsg;auto sql = "create table users(userid varchar(20) PRIMARY KEY, name varchar(50), age int, birthday datetime);";retVal = sqli 阅读全文
posted @ 2013-11-15 13:35 junchu25 阅读(11846) 评论(0) 推荐(0) 编辑
摘要:由于需要sqlite的x64版本只能自己编译,下载sqlite源代码、sqlite.def。Visual Studio 2013新建一个Visual C++ Empty Project,Configuration Type设置为Dynamic Library (.dll)。Linker -> Inp... 阅读全文
posted @ 2013-11-14 00:17 junchu25 阅读(1451) 评论(0) 推荐(0) 编辑
摘要:1、创建一个GUID标识该系统目录,比如:{7854FF7A-470F-4D04-9FC5-4CFC7B2A0E89}。下面的操作步骤将全部使用这个示例GUID。2、打开注册表编辑器(Registry Editor),在"HKEY_CLASSES_ROOT\CLSID"下New Key:{7854FF7A-470F-4D04-9FC5-4CFC7B2A0E89},默认值可以定义显示名称。3、"HKEY_CLASSES_ROOT\CLSID\{7854FF7A-470F-4D04-9FC5-4CFC7B2A0E89}"下New Key:DefaultIco 阅读全文
posted @ 2013-10-11 21:11 junchu25 阅读(745) 评论(0) 推荐(0) 编辑
摘要:最近开发一个Drive程序,修改注册表添加System Folder Drive后需要通知已打开的每个文件浏览器刷新。最初选择获取对应窗体的句柄并发送WM_KEYDOWN、WM_KEYUP的VK_F5消息未果,使用spy++监控Class Name =CabinetWClass、Window Caption =Computer窗体由鼠标右键"刷新"后所产生的消息,最终由Window Caption =ShellView的窗体句柄处理。代码很简单但调用FindWindowEx较多,但这并不是最佳方案。在MSDN搜索相关问题发现老外推荐参考"Folder Option 阅读全文
posted @ 2013-10-11 20:28 junchu25 阅读(714) 评论(0) 推荐(0) 编辑
摘要:如果已安装Windows SDK、Windows Mobile SDK且默认包含这些目录编译源代码没有问题。由于一些改动需要版本管理发现Build Agent运行失败,考虑到迁移各方面原因还是决定修改调用部分。首先移除项目几个配置版本Linker里的riched20.lib,之后打开UIRichEdit.cpp定位到如下源代码:// Create Text Services componentif(FAILED(CreateTextServices(NULL, this, &pUnk))) goto err;我们需要将Riched20.dll动态加载进来,CreateTextServi 阅读全文
posted @ 2013-09-14 09:46 junchu25 阅读(4009) 评论(0) 推荐(0) 编辑
摘要:PDC 2010 Hejlsberg的演讲中我们看到了VB.NET、C#新的简化异步编程的方式(可以下载新的Async CTP体验)。之前的TPL(Task Parallel Library)简化了并行编程。工业语言的飞速发展大大改进、简化了开发人员的编程方式。不仅是微软平台的托管语言,非托管语言也始终保持着一定程度的进化,我想通过两三篇文章来讲述Visual C++ 2010并行编程相关的内容。在介绍Visual C++ 2010的ppl之前,先简单介绍两个比较重要的新语法特性:1、auto关键字Visual C++ 2010中的auto关键字不再是以前简单的自动变量的概念,它被用于简化变量 阅读全文
posted @ 2012-08-11 11:44 junchu25 阅读(723) 评论(0) 推荐(0) 编辑
摘要:下载gtest并使用visual studio 2010编译它。编译成功后再Visual Studio中添加gtest的include目录。创建一个Win32 Console项目,添加gtest的头文件:#include <gtest/gtest.h>项目属性添加gtest相关联的库链接目录:1、Linker -> General -> Additional Library Directories -> 设置为gtest编译后目录2、Linker -> Input -> Additional Dependencies -> 添加gtestd.li 阅读全文
posted @ 2012-08-11 11:19 junchu25 阅读(434) 评论(0) 推荐(0) 编辑
摘要:使用DirectUI需要directuiCom.dll,包含IDirectUI.h和DirectuiDef.h。在你的应用程序中初始化CLSID_DirectUI,并获取IDirectUI(IID_IDirectUI)接口。具体初始化方式可以参考官网示例。DirectUI的界面定义分为xml + script。xml定义界面的布局、样式、资源。script文件定义相关消息的映射处理,并通过Window.OnSkinCmd转发相应的消息到指定的函数。假设这里你使用的技术是ATL,DirectUI定义了WM_SKIN_COMMAND消息,你可以添加对应的MESSAGE_HANDLER:MESSAG 阅读全文
posted @ 2012-08-11 11:15 junchu25 阅读(882) 评论(0) 推荐(0) 编辑
摘要:决定减少使用WTL用Qt,想要在Visual Studio下使用Qt需要先下载Qt的Windows SDK和Qt的Visual Studio AddIn,可以去官网下载。之后分别安装SDK和AddIn。由于Qt默认使用了mingw编译,所以需要重新编译。打开Visual Studio Command Prompt (2010),cd到Qt安装目录的qt文件夹,例如:E:cd E:\Coding\Qt\2010.05\qt再次输入configure -platform win32-msvc2010选择O和Y开始等待配置编译环境,整个过程大概需要10分钟左右,之后输入nmake开始编译(编译时间较 阅读全文
posted @ 2012-08-10 10:23 junchu25 阅读(2152) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示