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
本文介绍使用VS.net2003进行Windows应用程序开发的实用技巧,包括环境配置、资源管理、内存优化及多实例限制等。通过具体代码示例展示了如何设置编译选项、减少内存占用、防止多个实例运行等。
2296

被折叠的 条评论
为什么被折叠?



