鄙人买了侯的深入浅出MFC,在VC6下,运行光盘上的例子能编译但不能Link
搞了好久,信心都快没了。哪位兄弟能帮忙指出错误将不胜感激(附源码,那个图标没法粘上来)
//---------------------------------------------------------------------
//           Generic - ボ絛 Win32 祘Α膀娄糶猭
//                   Top Studio * J.J.Hou
// 郎     : generic.c
//      : 獼玊城
// 絪亩羛挡 : 叫把σ generic.mak
//---------------------------------------------------------------------#include <windows.h>   // – Windows 祘Α常惠璶郎
#include "resource.h"  // ず resource IDs
#include "generic.h"   // セ祘Αぇ郎HINSTANCE _hInst;      // Instance handle
HWND      _hWnd;char _szAppName[] = "Generic";    // 祘Α嘿
char _szTitle[]   = "Generic Sample Application"; // 跌怠夹肈//---------------------------------------------------------------------
// WinMain - 祘Α秈翴
//---------------------------------------------------------------------
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,     int nCmdShow)
{
MSG msg;  UNREFERENCED_PARAMETER(lpCmdLine);      // 磷絪亩牡  if (!hPrevInstance)
      if (!InitApplication(hInstance))
          return (FALSE);  if (!InitInstance(hInstance, nCmdShow))
      return (FALSE);  while (GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
  }  return (msg.wParam); // 肚 PostQuitMessage 把计
}
//---------------------------------------------------------------------
// InitApplication - 爹跌怠摸
//---------------------------------------------------------------------
BOOL InitApplication(HANDLE hInstance)
{
WNDCLASS  wc;  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;  return (RegisterClass(&wc));
}
//---------------------------------------------------------------------
// InitInstance - 玻ネ跌怠
//---------------------------------------------------------------------
BOOL InitInstance(HANDLE hInstance, int nCmdShow)
{
  _hInst = hInstance; // 纗办跑计よ獽ㄏノ  _hWnd = 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);         // 癳 WM_PAINT
  return (TRUE);
}
//---------------------------------------------------------------------
// 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:
                // ㄏノ稱挡祘Α矪瞶よΑ籔 WM_CLOSE 
                DestroyWindow (hWnd);
                break;           default:
                return (DefWindowProc(hWnd, message, wParam, lParam));
         }
         break;    case WM_DESTROY:  // 跌怠竒砆篟反 (祘Α盢挡)
         PostQuitMessage(0);
         break;    default:
         return (DefWindowProc(hWnd, message, wParam, lParam));
  }
  return (0);
}
//---------------------------------------------------------------------
// About - 癸杠舶ㄧΑ
//---------------------------------------------------------------------
LRESULT CALLBACK About(HWND hDlg,     UINT message,
                       WPARAM wParam, LPARAM lParam)
{
  UNREFERENCED_PARAMETER(lParam);      // 磷絪亩牡  switch (message) {
    case WM_INITDIALOG:
         return (TRUE);      // TRUE ボи矪瞶筁硂癟    case WM_COMMAND:
         if (LOWORD(wParam) == IDOK
             || LOWORD(wParam) == IDCANCEL) {
             EndDialog(hDlg, TRUE);
             return (TRUE);  // TRUE ボи矪瞶筁硂癟
         }
         break;
  }
  return (FALSE); // FALSE ボи⊿Τ矪瞶硂癟
}
//------------------------ end of file ------------------------------


解决方案 »

  1.   

    //---------------------------------------------------------------------
    // 郎 : generic.h
    //---------------------------------------------------------------------
    BOOL InitApplication(HANDLE);
    BOOL InitInstance(HANDLE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
    
      

  2.   

    # filename : generic.mak
    # make file for generic.exe (Generic Windows Application)
    # usage : nmake generic.mak (Microsoft C/C++ 9.00) (Visual C++ 2.0)
    # usage : nmake generic.mak (Microsoft C/C++ 10.00) (Visual C++ 4.0)all: generic.exegeneric.res : generic.rc generic.h
        rc generic.rcgeneric.obj : generic.c generic.h
        cl -c -W3 -Gz -D_X86_ -DWIN32 generic.cgeneric.exe : generic.obj generic.res
        link /MACHINE:I386 -subsystem:windows generic.res generic.obj \
             libc.lib kernel32.lib user32.lib gdi32.lib
      

  3.   

    //---------------------------------------------------------------------
    // 郎 : generic.rc
    //---------------------------------------------------------------------
    #include "windows.h"
    #include "resource.h"jjhouricon ICON    DISCARDABLE     "jjhour.ico"GenericMenu MENU DISCARDABLE
    BEGIN
        POPUP "&File"
        BEGIN
            MENUITEM "&New",              IDM_NEW, GRAYED
            MENUITEM "&Open...",          IDM_OPEN, GRAYED
            MENUITEM "&Save",             IDM_SAVE, GRAYED
            MENUITEM "Save &As...",       IDM_SAVEAS, GRAYED
            MENUITEM SEPARATOR
            MENUITEM "&Print...",         IDM_PRINT, GRAYED
            MENUITEM "P&rint Setup...",   IDM_PRINTSETUP, GRAYED
            MENUITEM SEPARATOR
            MENUITEM "E&xit",             IDM_EXIT
        END
        POPUP "&Edit"
        BEGIN
            MENUITEM "&Undo\tCtrl+Z",     IDM_UNDO, GRAYED
            MENUITEM SEPARATOR
            MENUITEM "Cu&t\tCtrl+X",      IDM_CUT, GRAYED
            MENUITEM "&Copy\tCtrl+C",     IDM_COPY, GRAYED
            MENUITEM "&Paste\tCtrl+V",    IDM_PASTE, GRAYED
            MENUITEM "Paste &Link",       IDM_LINK, GRAYED
            MENUITEM SEPARATOR
            MENUITEM "Lin&ks...",         IDM_LINKS, GRAYED
        END
        POPUP "&Help"
        BEGIN
            MENUITEM "&Contents",               IDM_HELPCONTENTS, GRAYED
            MENUITEM "&Search for Help On...",  IDM_HELPSEARCH, GRAYED
            MENUITEM "&How to Use Help",        IDM_HELPHELP, GRAYED
            MENUITEM SEPARATOR
            MENUITEM "&About Generic...",       IDM_ABOUT
        END
    ENDAboutBox DIALOG DISCARDABLE  22, 17, 144, 75
    STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
    CAPTION "About Generic"
    BEGIN
        CTEXT           "Windows 95",         -1,0, 5,144,8
        CTEXT           "Generic Application",-1,0,14,144,8
        CTEXT           "Version 1.0",        -1,0,34,144,8
        DEFPUSHBUTTON   "OK",              IDOK,53,59,32,14,WS_GROUP
    END
    
      

  4.   

    //---------------------------------------------------------------------
    // 郎 : resource.h
    //---------------------------------------------------------------------
    #define IDM_NEW                         40001
    #define IDM_OPEN                        40002
    #define IDM_SAVE                        40003
    #define IDM_SAVEAS                      40004
    #define IDM_PRINT                       40005
    #define IDM_PRINTSETUP                  40006
    #define IDM_EXIT                        40007
    #define IDM_UNDO                        40008
    #define IDM_CUT                         40009
    #define IDM_COPY                        40010
    #define IDM_PASTE                       40011
    #define IDM_LINK                        40012
    #define IDM_LINKS                       40013
    #define IDM_HELPCONTENTS                40014
    #define IDM_HELPSEARCH                  40015
    #define IDM_HELPHELP                    40016
    #define IDM_ABOUT                       40017
    
      

  5.   

    出现的提示是
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/Generic.exe : fatal error LNK1120: 1 unresolved externals
      

  6.   

    晕……这么多,你看看是不是要连接lib库?
      

  7.   

    不是的啊,我换了好几种编译器,在Dev-c++,提示:
    [Linker error] undefined reference to `GetStockObject@4'