想學程式設計而去買了一本書,沒想到第一個程式就出現問題,也許是太基本了作者沒有詳細說明,只好來這裡請教各位,希望能得到解答。 我是使用dev-c++(因為免費)作程式的編譯,作者在書中附了三個檔案(一個是creatwindow.cpp一個是resouce.h一個是resource.rc)和一個可執行檔(exe),可是我用dev-C++去編譯原始檔(cpp)得到的程式有七百多k,而書中附的執行檔才28k,而且和我編譯出的程式(編譯時三個檔案放在同一個目錄,而且沒出現問題)功能上也不相同(我的比較少),推測是沒有將resource.rc這個檔一起編譯進去,能告訴我要如何才能正確的編譯嗎? 以下附上三個檔案的內容
creatwindow.cpp /*----- CreateWindow.C -----*/ #include
#include "Resource.h" HINSTANCE hInst;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = "MyApp" ;
HWND hWnd ;
MSG msg ;
WNDCLASSEX wndclass ; wndclass.cbSize = sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
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)(COLOR_WINDOW 1) ;
wndclass.lpszMenuName = "IDR_MENU1" ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; RegisterClassEx (&wndclass) ;
hInst = hInstance; hWnd = CreateWindow (szAppName, "函式示範:123", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ; ShowWindow (hWnd, iCmdShow) ;
UpdateWindow (hWnd) ; while (GetMessage (&msg, NULL, 0, 0) )
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
} LRESULT CALLBACK WndProc (HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hDC ; switch (iMsg)
{
case WM_CREATE:
return 0 ; case WM_PAINT:
{
PAINTSTRUCT ps ; hDC = BeginPaint (hWnd, &ps) ;
EndPaint (hWnd, &ps) ;
}
return 0 ; case WM_COMMAND:
switch( LOWORD(wParam) )
{
case IDM_Demo:
MessageBox (hWnd, "函式示範", "IDM_Demo", MB_OK) ;
return 0 ;
case IDM_Exit:
DestroyWindow (hWnd) ;
return 0 ;
}
break ; case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
} /*-- End of switch --*/ return DefWindowProc (hWnd, iMsg, wParam, lParam) ;
}
/*----End of Program----*/ resouce.h //{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Resource.rc
//
#define IDM_Exit 40001
#define IDM_Demo 40002 // Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40003
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif resource.rc //Microsoft Developer Studio generated resource script.
//
#include "resource.h" #define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h" /////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS /////////////////////////////////////////////////////////////////////////////
// Chinese (Taiwan) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
#pragma code_page(950)
#endif //_WIN32 #ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
// 1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END 2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END 3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END #endif // APSTUDIO_INVOKED /////////////////////////////////////////////////////////////////////////////
//
// Menu
// IDR_MENU1 MENU DISCARDABLE
BEGIN
POPUP "檔案(&F)"
BEGIN
MENUITEM "結束(&X)", IDM_Exit
END
POPUP "示範(&S)"
BEGIN
MENUITEM "範例(&D)", IDM_Demo
END
END #endif // Chinese (Taiwan) resources
///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
// /////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED