改写自候捷的generic.c
//---------------------------------------------------------------------
// 文件 : generic.c
// 作者 : 杨根成
// 编译连接 : 请参考 generic.mak
//---------------------------------------------------------------------
#include <windows.h> // 每一个Windows程序都需要载入此头文件
#include "resource.h" // 内含各个 resource IDs
HINSTANCE _hInst; // Instance handle
HWND _hWnd;
char _szAppName[] = "Generic";
char _szTitle[] = "Base Win32 SDK Application";
//---------------------------------------------------------------------
// About - 对话框函数
//---------------------------------------------------------------------
LRESULT CALLBACK About(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message) {
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
if (LOWORD(wParam) == IDOK
|| LOWORD(wParam) == IDCANCEL) {
EndDialog(hDlg, TRUE);
return (TRUE);
}
break;
}
return (FALSE);
}
//---------------------------------------------------------------------
// WndProc - 窗口函数
//---------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message) {
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId) {
case IDM_ABOUT:
DialogBox(_hInst,
"AboutBox",
hWnd,
(DLGPROC)About
);
break;
case IDM_EXIT:
DestroyWindow (hWnd);
break;
default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
break;
case WM_LBUTTONDOWN:
MessageBox(hWnd, "鼠标左键单击!", "消息", MB_ICONINFORMATION);
break;
case WM_RBUTTONDOWN:
MessageBox(hWnd, "鼠标右键单击!", "消息", MB_ICONINFORMATION);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return (0);
}
//---------------------------------------------------------------------
// WinMain - 程序进入点
//---------------------------------------------------------------------
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASS wc;
UNREFERENCED_PARAMETER(lpCmdLine); // 避免编译时的警告
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, "jjhouricon");
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH); // 窗口后台颜色
wc.lpszMenuName = "GenericMenu"; // .RC 所定义的窗体
wc.lpszClassName = _szAppName;
RegisterClass(&wc);
_hInst = hInstance; // 存储为全局变量,方便使用
_hWnd = CreateWindow( //CreateWindow()
_szAppName,
_szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (!_hWnd)
return (FALSE);
ShowWindow(_hWnd, nCmdShow);
UpdateWindow(_hWnd);
/*--以下是主消息循环--*/
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
//------------------------ end of file ------------------------------
个人感觉,我修改的这个源程序,比候捷的哪个更简洁,基本是用Win32 SDK 堆砌构建而成。