请教实现一个简单的 “hello world“ 程序。 我用的是.net 2003,想实现一个"hello world"程序,但怎么也没成功,每次修改都出现不同的毛病,当然,程序是我照着书写的,不是我自己编的,可能是创建project的过程或者那不对吧,那就请教大家了。80分全部送给第一个帮助我成功实现程序的大侠。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也这样认为。书本程序应该没有问题。是你新建工程的时候可能是步骤不正确。。我希望你的书和机器都是VC。NET的,呵呵。 对不起啊,我不太知道怎么问。错误一堆一堆的。大家尽管批评我,没事的,我喜欢。首先我是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; NEW -> Visual C++ projects -> MFC 应用程序-> ok To zhucde:谢谢回复。我试试区,不过在Win32 下游没有实现的方法呢? 首先我是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;} 对不起啊,我没说清楚,我再重说一遍首先我是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; 呵呵我试了一个你的程序你的m_nCmdshow错了,应该是m_nCmdShowS是大写的以后一切OK给分吧??? 忘了加一句把你m_pMainWnd -> UpdateWindow(); ------ return TRUE之间的 "m_pMainWnd->m_" 一定要删除哦 试了,还是有毛病,说 Debug Assertion Failed!请指教。 这个是托管C++的,看好了:添加在你的XXX(项目名).cpp文件里#include "stdafx.h"#using <mscorlib.dll>using namespace System;int _tmain(){ // TODO: 请用您自己的代码替换下面的示例代码。 Console::WriteLine(S"Hello World"); return 0;} 这个是WIN32的:#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ std::cout<<"Hello World!"<<endl; return 0;} 对话框上不同控件使用不同字体 VC ShellExcute文件参数lpParameters带空格的问题! 请教:如何将IE上对所选择内容做的高亮显示去掉? 视图中焦点问题? 怎么样单独刷新一个控件啊? 进度条与进度的协调 请问8位灰度图的文件格式 OpenGL如何给三角网格纹理映射 急!!!! 请教:CListCtrl中如何获得鼠标选中的那一项的索引制,给出代码者立即得分!!!!!! 请教BHO调用IE打印机 程序员遭遇爱情(散分) 关于位图的一个复杂问题(有深度哦)
书本程序应该没有问题。
是你新建工程的时候可能是步骤不正确。。
我希望你的书和机器都是VC。NET的,呵呵。
然后,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;
采用全默认的设置,看看是不是你选应用程序类型时,选了静态库?
// 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;
}
接着,在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;
我试了一个你的程序
你的m_nCmdshow错了,应该是m_nCmdShow
S是大写的
以后一切OK
给分吧???
把你m_pMainWnd -> UpdateWindow(); ------ return TRUE
之间的 "m_pMainWnd->m_" 一定要删除哦
请指教。
{
// TODO: 请用您自己的代码替换下面的示例代码。
Console::WriteLine(S"Hello World");
return 0;
}
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"Hello World!"<<endl;
return 0;
}