《深入浅出MFC第2版(PDF格式)》第19章


以是任何命令列动作,本例为 。 
因此,我们就可以把不同文件间的依存关系做一个整理,以makefile 语法描述,以产生 
makefile NMAKE。EXE Microsoft MAKE。EXE 
必要的编译、联结动作。 必须以 ( 工具)或 
Borland MAKE。EXE 
( 工具)处理之,或其它编译器套件所附的同等工具(可能也叫做 ) 
处理之。 
9 
…………………………………………………………Page 72……………………………………………………………
Generic。mak (请在DOS 窗口中执行nmake generic。mak。环境设定请参考p。224) 
#0001 # filename : generic。mak 
#0002 # make file for generic。exe (Generic Windows Application) 
#0003 # usage : nmake generic。mak (Microsoft C/C++ 9。00) (Visual C++ 2。x) 
#0004 # usage : nmake generic。mak (Microsoft C/C++ 10。00) (Visual C++ 4。0) 
#0005 
#0006 all: generic。exe 
#0007 
#0008 generic。res : generic。rc generic。h 
#0009 rc generic。rc 
#0010 
#0011 generic。obj : generic。c generic。h 
#0012 cl …c …W3 …Gz …D_X86_ …DWIN32 generic。c 
#0013 
#0014 generic。exe : generic。obj generic。res 
#0015 link /MACHINE:I386 …subsystem:windows generic。res generic。obj
#0016 libc。lib kernel32。lib user32。lib gdi32。lib 
Generic。h 
#0001 //……………………………………………………………………………………………………………………………………………………………………
#0002 // 档名 : generic。h 
#0003 //……………………………………………………………………………………………………………………………………………………………………
#0004 BOOL InitApplication(HANDLE); 
#0005 BOOL InitInstance(HANDLE; int); 
#0006 LRESULT CALLBACK WndProc(HWND; UINT; WPARAM; LPARAM); 
#0007 LRESULT CALLBACK About(HWND; UINT; WPARAM; LPARAM); 
Generic。c (粗体代表Windows API 函数或宏) 
#0001 //……………………………………………………………………………………………………………………………………………………………………
#0002 // Generic Win32 程序的基础写法 
#0003 // Top Studio * J。J。Hou 
#0004 // 档名 : generic。c 
#0005 // 作者 : 侯俊杰 
#0006 // 编译联结 : 请参考generic。mak 
#0007 //……………………………………………………………………………………………………………………………………………………………………
#0008 
#0009 #include // 每一个 Windows 程序都需要包含此档 
#0010 #include 〃resource。h〃 // 內含各个 resource IDs 
#0011 #include 〃generic。h〃 // 本程序之含入档 
#0012 
#0013 HINSTANCE _hInst; // Instance handle 
#0014 HWND _hWnd; 
10 
…………………………………………………………Page 73……………………………………………………………
#0015 
#0016 char _szAppName'' = 〃Generic〃; //
程序名称 
#0017 char _szTitle'' = 〃Generic Sample Application〃; //
窗口标题 
#0018 
#0019 //……………………………………………………………………………………………………………………………………………………………………
#0020 // WinMain 程序进入点 
#0021 //……………………………………………………………………………………………………………………………………………………………………
#0022 int CALLBACK WinMain (HINSTANCE hInstance; HINSTANCE hPrevInstance; 
#0023 LPSTR lpCmdLine; int nCmdShow) 
#0024 { 
#0025 MSG msg; 
#0026 
#0027 UNREFERENCED_PARAMETER (lpCmdLine); //
避免编译时的警告 
#0028 
#0029 if (!hPrevInstance) 
#0030 if (!InitApplication(hInstance)) 
#0031 return (FALSE); 
#0032 
#0033 if (!InitInstance(hInstance; nCmdShow)) 
#0034 return (FALSE); 
#0035 
#0036 while (GetMessage (&msg; NULL; 0; 0)) { 
#0037 TranslateMessage (&msg); 
#0038 DispatchMessage (&msg); 
#0039 } 
#0040 
#0041 return (msg。wParam); //
传回 PostQuitMessage
的参数 
#0042 } 
#0043 //……………………………………………………………………………………………………………………………………………………………………
#0044 // InitApplication
注册窗口类别 
#0045 //……………………………………………………………………………………………………………………………………………………………………
#0046 BOOL InitApplication(HINSTANCE hInstance) 
#0047 { 
#0048 WNDCLASS wc; 
#0049 
#0050 wc。style = CS_HREDRAW | CS_VREDRAW; 
#0051 wc。lpfnWndProc = (WNDPROC)WndProc; //窗口函数 
#0052 wc。cbClsExtra = 0; 
#0053 wc。cbWndExtra = 0; 
#0054 wc。hInstance = hInstance; 
#0055 wc。hIcon = LoadIcon(hInstance; 〃jjhouricon〃); 
#0056 wc。hCursor = LoadCursor(NULL; IDC_ARROW); 
#0057 wc。hbrBackground = GetStockObject(WHITE_BRUSH); // 窗口背景颜色 
#0058 wc。lpszMenuName = 〃GenericMenu〃; // 。RC
所定义的菜单 
#0059 wc。lpszClassName = _szAppName; 
#0060 
11 
…………………………………………………………Page 74……………………………………………………………
#0061 return (RegisterClass (&wc)); 
#0062 } 
#0063 //……………………………………………………………………………………………………………………………………………………………………
#0064 // InitInstance
产生窗口 
#0065 //……………………………………………………………………………………………………………………………………………………………………
#0066 BO
小说推荐
返回首页返回目录