Posts Tagged ‘C/C++’

Visual Studio缓存清理

星期三, 十二月 21st, 2016

批处理脚本:

@echo off
for %%i in (7.1,9.0,10.0,12.0) do (
@REG Delete HKCU\Software\Microsoft\VisualStudio\%%i\FileMRUList /f
@REG Delete HKCU\Software\Microsoft\VisualStudio\%%i\ProjectMRUList /f
@REG Delete HKCU\Software\Microsoft\VisualStudio\%%i\Find /va /f
@REG Delete HKCU\Software\Microsoft\VisualStudio\%%i\ComponentPickerPages /f
@REG Delete HKCU\Software\Microsoft\VisualStudio\%%i\Object_Browser /f
@REG Delete "HKCU\Software\Microsoft\VisualStudio\%%i\Class View" /va /f
)
for %%i in (2005,2008,2010,2013) do (
RD /s /q "%USERPROFILE%\Documents\Visual Studio %%i\Backup Files"
RD /s /q "%USERPROFILE%\Documents\Visual Studio %%i\Settings"
RD /s /q "%USERPROFILE%\Documents\Visual Studio %%i\Templates"
)
pause

C++的4种类型转换

星期四, 十二月 15th, 2016

摘自:http://www.cnblogs.com/welfare/articles/336091.html

一、C 风格(C-style)强制转型如下:

(T) expression // cast expression to be of type T
函数风格(Function-style)强制转型使用这样的语法:
T(expression) // cast expression to be of type T
这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。

(更多…)

VC中调用COM组件的方法

星期二, 九月 20th, 2016

准备及条件:
COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法HRESULT SayHello(void)

在SDK中调用
=====================================
一、最简单最常用的一种,用#import导入类型库,利用VC提供的智能指针包装类
演示代码:

#import "D:\Temp\vc\simpCOM\Debug\simpCOM.dll" no_namespace
CoInitialize(NULL);
{
  IFooPtr spFoo = NULL;
  spFoo.CreateInstance(__uuidof(Foo));
  spFoo->SayHello();
}
CoUninitialize();  // 注:如果Ptr对象不放入{...}内在CoUninitialize前析构会出错

(更多…)

Win7下VC6字体问题

星期一, 九月 19th, 2016

Windows 7下安装使用VC6时,进入设置的Format是无法选择字体的,解决办法是找个XP安装VC6,进入设置把Format设置好后打开注册表,把HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format项导出成一个*.reg文件,拿到Windows 7系统下导入即可。

附件 vc6.7z 是我常用的VC6格式reg文件(宋体或consolas字体,大小10),也可以用附件中的VC6.0FontSet.exe来统一替换成自己需要的字体。

VS2003属性窗口空白的问题

星期一, 九月 19th, 2016

解决办法如下:
1. 重新打开一个vs工程,例如.net工程。
2. 尝试找到一个能让属性窗口正常显示的。例如C#或C++.Net的form的属性。
3. 属性窗口正常后,关闭此解决方案。
4. 打开有问题的解决方案,你会发现属性窗口一切正常。

摘自:http://www.voidcn.com/blog/udking/article/p-3159051.html

解决VC2008编译C/C++混合代码出现D8045错误的问题

星期四, 八月 20th, 2015

使用Visual Studio 2008编译VC程序,如果窗体上需要引入一个C#编写的UserControl,那么必须在引入程序的代码*.h文件包含afxwinforms.h文件,比如:

#pragma once
#include <afxwinforms.h>
#using "..\Bin\MyUserControl.dll" // C# UserControl assembly

包含afxwinforms.h必须选择“/clr”选项,即要选中Configuration Properties->General下的“Common Language Runtime Support (/clr)”。

(更多…)

自己写个自动清理Windows内存的工具

星期三, 十二月 21st, 2011

微软有个Clearmem.exe程序用来整体清理内存,不过好象要连续两次运行才能达到效果,速度也不快,关键是在我的机器上现在运行不起来了,老是出错退出。

微软另有个empty.exe程序可以用来对单独的进程进行内存整理,效率很高,但需要知道进程的PID才可以操作。

网上看到别人写过对empty.exe加壳的ClearMem.exe,我找了几个地方都下不到程序,干脆自己也写一个,也是依赖empty.exe的。原理就是设定的时间到了之后就遍历系统所有进程,对于PID大于10的进程(系统进程跳过)逐一调用“empty.exe PID”来完成内在的整理,驻留在后台可以定时执行。

运行后会在系统状状态栏看到程序的图标,右击可以看到相关菜单:

为了减少对系统动态链接库的依赖,用VC6.0来做开发环境,这里把程序和源码都附上,可以自行选用或升级,需要说明的一点是转载时要注明出处。

程序(注意empty.exe要放在同一目录下):ClearMem.zip 源码:ClearMem_src.zip

写了Host Switchy小工具

星期一, 四月 18th, 2011

因众所周知的原因,Google的某些SSL服务经常间竭性的抽疯,怎样才能快速发现某SSL已经抽疯并切换至未抽疯的服务,从而不影响到我们使用这些非常优秀的服务呢?

为了解决这个问题我自己用VC写了这个Host Switchy小工具,界面:

(更多…)

__cdecl与__stdcall

星期三, 十月 20th, 2010

__cdecl:

参数入栈顺序:从右到左,由调用者负责清栈。这是C/C++/MFC的默认调用约定。可变参数和C的函数只能用这个约定。

__stdcall:

参数入栈顺序:从右到左,由被调用者负责清栈。这是Win32 API的调用约定。

Windef.h中的宏:

#define CALLBACK    __stdcall
#define WINAPI      __stdcall
#define WINAPIV     __cdecl
#define APIENTRY    WINAPI
#define APIPRIVATE  __stdcall
#define PASCAL      __stdcall

更多:http://blog.csdn.net/tuwen/archive/2008/03/14/2182838.aspx

C++编程规范101条规则摘要汇总

星期四, 六月 10th, 2010

这里以图片方式罗列《C++编程规范》101条规则的摘要汇总,版权归原著所有,需要看详细内容的自行去购买该书。

书的封面:

(更多…)