islq's space

Try,try,try,never say die!

VC笔记

1、开启VS.net2003的环境变量的cmd窗口
%comspec% /k "C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/Tools/vsvars32.bat"
cl -c test.cpp
link test.obj /OUT:test.exe
nmake:根据makefile来编译程序

2、在源文件中直接申明编译选项
#pragma comment(lib, "gdiplus.lib")//制定链接库文件
#pragma comment (linker, "/SUBSYSTEM:WINDOWS")
#pragma comment (linker, "/NODEFAULTLIB")
#pragma once

3、SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);最小化程序占用内存

4、程序挂起:Sleep(INFINITE);

5、简单的Win32程序,不要窗口:
#include <windows.h>
__stdcall WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
)
{
 Sleep(INFINITE);
 return 0;
}

6、最小体积的win32程序:(不要编译缺省库)
#pragma comment (linker, "/SUBSYSTEM:WINDOWS")
#pragma comment (linker, "/NODEFAULTLIB")
int WinMainCRTStartup()
{
 return 0;
}

7、利用记事本输出调试信息,在调试dll之类的程序比较方便
const char maintitle[] = "无标题 - 记事本";
LPCTSTR str = "TEST TEST TEST";
HWND h = ::FindWindow(NULL,maintitle);
::SendDlgItemMessage(h,0xf,EM_REPLACESEL,0,LPARAM(str) );

8、只允许运行一个实例
LPCTSTR myAtom = "LogCmd by monklong";
ATOM atom = GlobalFindAtom(myAtom)
if ( atom != 0 ) return 0;
GlobalAddAtom(myAtom);
//main process
GlobalDeleteAtom(atom);//程序退出时删除Atom,否则不能清除全局Atom

9、DLL中增加全局共享数据:
主程序中增加:(注意一定需要初始化)
#pragma data_seg("my_data_seg")
HHOOK hHook   = NULL;
HINSTANCE hInstance  = NULL;
static char logBuf[SIZE_BUFFER] = {0};
#pragma data_seg()
DEF文件中增加:
SECTIONS
my_data_seg READ WRITE SHARED

 


阅读更多
个人分类: 学习笔记
上一篇中文输入和键盘纪录的资料整理
下一篇IE没有背景色的问题解决
想对作者说点什么? 我来说一句

vc笔记

2013年06月20日 58.66MB 下载

vc++课堂笔记

2011年10月31日 454KB 下载

没有更多推荐了,返回首页

关闭
关闭