1。VC60下的代码
/*
Date : 20091013
For : create a form
Book : using VC++ while learning
*/
#include <windows.h>
LRESULT CALLBACK WndProc(
HWND,
UINT,
WPARAM,
LPARAM
);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow
)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
//wchar_t lpszClassName[] = L"窗口"; //20091013 01 char -> wchar_t L"..."
//wchar_t lpszTitle[] = L"My_Windows"; //20091013 02 char -> wchar_t L"..."
char lpszClassName[] = "窗口";
char lpszTitle[] = "My_Windows";
//窗口定义
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
//wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //20091013 03 add (HBRUSH)
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = lpszClassName;
//注册窗口
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
//创建窗口
hwnd = CreateWindow(lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
//显示窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//消息循环
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
//================================
LRESULT CALLBACK WndProc(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd,
message,
wParam,
lParam);
}
return (0);
}
2。需要修正后才能移植到VC++2008环境下运行。
2.1需要将上面ABC三处语句加上,同时将下面对应的语句abc删除。
2.2对于C可能有些VC6.0的SPx必须增加(HBRUSH),也许老版本的VC6.0不需要。
3。有兴趣的同仁可以谈谈为什么需要这样的改动。