用vc打造一个仅2.5k的win32GUI程序
将下面的代码保存为.c文件
//-------------------------start---------------------------------
#include <windows.h>
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
void WinEntry()
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
STARTUPINFO spinfo;
HINSTANCE hInst=GetModuleHandle(NULL);
wincl.hInstance = hInst;
wincl.lpszClassName = "minitest";
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
if(!RegisterClassEx(&wincl))
goto exit;
hwnd = CreateWindowEx(0,wincl.lpszClassName, "test window",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,544,375,HWND_DESKTOP,NULL,hInst,NULL);
if(!hwnd)
goto exit;
GetStartupInfo(&spinfo);
ShowWindow(hwnd,spinfo.wShowWindow);
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
exit:ExitProcess(0);
}
//-------------------------end---------------------------
用vc打开,“编译”-“构件”,vc会提示建立一个“default project workspace”,选择“是”。然后在“工程”-“设置”里选择“link”选项卡,将“output”中的“EntryPoint”设置为“WinEntry”,在界面下方的“project option”中找到“/subsystem:console”,改为“/subsystem:windows”,再增加一个参数“/align:4096”。最后选择“release”发布,编译器会警告:“LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not run”,不用理会它。现在你就可以在“release”文件夹下找一个2560字节的win32 GUI程序了。
该代码在windows 2000 sp3 + vc 6.0下编译通过。