我用的是.net 2003,想实现一个"hello world"程序,但怎么也没成功,每次修改都出现不同的毛病,当然,程序是我照着书写的,不是我自己编的,可能是创建project的过程或者那不对吧,那就请教大家了。80分全部送给第一个帮助我成功实现程序的大侠。谢谢!

解决方案 »

  1.   

    我也这样认为。
    书本程序应该没有问题。
    是你新建工程的时候可能是步骤不正确。。
    我希望你的书和机器都是VC。NET的,呵呵。
      

  2.   

    对不起啊,我不太知道怎么问。错误一堆一堆的。大家尽管批评我,没事的,我喜欢。首先我是NEW -> Visual C++ projects -> Win32 Project -> ok 
    然后,use of MFC 里选上 Use MFC in a Static Library
    接着,在source files里add -> add new item -> main.cpp 在这里写下如下程序。
    然后一堆错误。#include "stdafx.h"
    #include <afxwin.h>class CMainFrame:public CFrameWnd
    {
    public:
    CMainFrame();
    };CMainFrame::CMainFrame()
    {
    Create(NULL,"Windows");}class CMFCDemolApp:public CWinApp
    {
    public:
    virtual bool InitInstance();
    };bool CMFCDemolApp::InitInstance()
    {
    m_pMainWnd = new CMainFrame();
    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd->UpdateWindow(); return true;
    }CMFCDemolApp theApp;
      

  3.   

    NEW -> Visual C++ projects -> MFC 应用程序-> ok
      

  4.   

    To zhucde:谢谢回复。我试试区,不过在Win32 下游没有实现的方法呢?
      

  5.   

    首先我是NEW -> Visual C++ projects -> Win32 Project -> ok 
    采用全默认的设置,看看是不是你选应用程序类型时,选了静态库?
    // temp9898.cpp : 定义应用程序的入口点。
    //#include "stdafx.h"
    #include "temp9898.h"
    #define MAX_LOADSTRING 100// 全局变量:
    HINSTANCE hInst; // 当前实例
    TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
    TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名// 此代码模块中包含的函数的前向声明:
    ATOM MyRegisterClass(HINSTANCE hInstance);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: 在此放置代码。
    MSG msg;
    HACCEL hAccelTable; // 初始化全局字符串
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_TEMP9898, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance); // 执行应用程序初始化:
    if (!InitInstance (hInstance, nCmdShow)) 
    {
    return FALSE;
    } hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TEMP9898); // 主消息循环:
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    } return (int) msg.wParam;
    }//
    //  函数: MyRegisterClass()
    //
    //  目的: 注册窗口类。
    //
    //  注释: 
    //
    //    仅当希望在已添加到 Windows 95 的
    //    “RegisterClassEx”函数之前此代码与 Win32 系统兼容时,
    //    才需要此函数及其用法。调用此函数
    //    十分重要,这样应用程序就可以获得关联的
    //   “格式正确的”小图标。
    //
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);  wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_TEMP9898);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = (LPCTSTR)IDC_TEMP9898;
    wcex.lpszClassName = szWindowClass;
    wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex);
    }//
    //   函数: InitInstance(HANDLE, int)
    //
    //   目的: 保存实例句柄并创建主窗口
    //
    //   注释: 
    //
    //        在此函数中,我们在全局变量中保存实例句柄并
    //        创建和显示主程序窗口。
    //
    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
       HWND hWnd;   hInst = hInstance; // 将实例句柄存储在全局变量中   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
          CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);   if (!hWnd)
       {
          return FALSE;
       }   ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);   return TRUE;
    }//
    //  函数: WndProc(HWND, unsigned, WORD, LONG)
    //
    //  目的: 处理主窗口的消息。
    //
    //  WM_COMMAND - 处理应用程序菜单
    //  WM_PAINT - 绘制主窗口
    //  WM_DESTROY - 发送退出消息并返回
    //
    //
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc; switch (message) 
    {
    case WM_COMMAND:
    wmId    = LOWORD(wParam); 
    wmEvent = HIWORD(wParam); 
    // 分析菜单选择:
    switch (wmId)
    {
    case IDM_ABOUT:
    DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
    break;
    case IDM_EXIT:
    DestroyWindow(hWnd);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    break;
    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    // TODO: 在此添加任意绘图代码...
    TextOut(hdc, 0, 0, "Hello World!", 12);
    EndPaint(hWnd, &ps);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }// “关于”框的消息处理程序。
    LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {
    case WM_INITDIALOG:
    return TRUE; case WM_COMMAND:
    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
    {
    EndDialog(hDlg, LOWORD(wParam));
    return TRUE;
    }
    break;
    }
    return FALSE;
    }
      

  6.   

    对不起啊,我没说清楚,我再重说一遍首先我是NEW -> Visual C++ projects -> MFC Application-> ok 
    接着,在source files里add -> add new item -> HelloEntry.cpp 在这里写下如下程序。
    build后,按F5运行,出错,debug assertion failed.
    #include "stdafx.h"
    #include <afxwin.h>class CMyApp: public CWinApp
    {
    public:
    virtual BOOL InitInstance();
    };class CHelloWindow:public CFrameWnd
    {
    CStatic* CS;
    public:
    CHelloWindow();
    };CHelloWindow::CHelloWindow()
    {
    Create(NULL,"Hello World",WS_OVERLAPPEDWINDOW, CRect(0,0,200,200));
    CS = new CStatic();
    CS->Create("hello world",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(50,80,150,150),this);
    }BOOL CMyApp::InitInstance()
    {
    m_pMainWnd = new CHelloWindow();
    // m_pMainWnd -> ShowWindow(m_nCmdshow);   (这里说没有m_nCmdshow,不知道为什么)
    m_pMainWnd -> UpdateWindow();
    m_pMainWnd->m_ return TRUE;
    }CMyApp myApp;
      

  7.   

    呵呵
    我试了一个你的程序
    你的m_nCmdshow错了,应该是m_nCmdShow
    S是大写的
    以后一切OK
    给分吧???
      

  8.   

    忘了加一句
    把你m_pMainWnd -> UpdateWindow(); ------  return TRUE
    之间的 "m_pMainWnd->m_" 一定要删除哦
      

  9.   

    试了,还是有毛病,说 Debug Assertion Failed!
    请指教。
      

  10.   

    这个是托管C++的,看好了:添加在你的XXX(项目名).cpp文件里#include "stdafx.h"#using <mscorlib.dll>using namespace System;int _tmain()
    {
        // TODO: 请用您自己的代码替换下面的示例代码。
        Console::WriteLine(S"Hello World");
    return 0;
    }
      

  11.   

    这个是WIN32的:#include "stdafx.h"
    #include <iostream>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    std::cout<<"Hello World!"<<endl;
    return 0;
    }