[したいこと・しりたいこと]
[目標]
Windows の Visual C++ 2008 Express で Hello World
C++ で Hello World
[環境]
Windows XP SP3 on VMWare
USB 104Key (US)
[前提]
Open Command Window Here が インストールされている
Microsoft PowerToys for Windows XP
http://www.microsoft.com/windowsxp/Downloads/powertoys/Xppowertoys.mspx
[したこと]
(1)Visual C++ 2008 Express Edition の インストール
Microsoft Visual C++ 2008 Express Edition の インストール
Microsoft Visual Studio 2008 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/
Microsoft Visual Studio 2008 Express Edition の DVD イメージからのインストール方法
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/offline.aspx
Visual Studio 2008 Express Edition with Service Pack 1 Combo DVD を ダウンロード
iso ファイルを 仮想マシンの CD にセットする
インストーラーの指示にしたがって、インストール
(2)[マイ ドキュメント] に vs フォルダを作る
(3)vs.bat ファイルを作る
vs フォルダに [新規テキスト ドキュメント.txt] ファイルを作る
vs.bat に 名前の変更をする
---------------ここから
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\"vsvars32.bat
---------------ここまで
(4)ソースコードを書く
vsフォルダに 新規テキスト ドキュメント.txt ファイルを作る
hello.cpp に 名前の変更をする
hello.cpp
---------------ここから
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/* WinMain(), our entry point */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow) {
static char szAppName[] = "winhello";
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
/* Fill in WNDCLASSEX struct members */
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.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
/* Register a new window class with Windows */
RegisterClassEx(&wndclass);
/* Create a window based on our new class */
hwnd = CreateWindow(szAppName, "Hello, world!",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
/* Show and update our window */
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
/* Retrieve and process messages until we get WM_QUIT */
while ( GetMessage(&msg, NULL, 0, 0) ) {
TranslateMessage(&msg); /* for certain keyboard messages */
DispatchMessage(&msg); /* send message to WndProc */
}
/* Exit with status specified in WM_QUIT message */
return msg.wParam;
}
/* Window procedure */
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps;
HDC hdc;
/* Switch according to what type of message we have received */
switch ( iMsg ) {
case WM_PAINT:
/* We receive WM_PAINT every time window is updated */
hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, 100, 100, "Hello, world!", 13);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
/* Window has been destroyed, so exit cleanly */
PostQuitMessage(0);
return 0;
}
/* Send any messages we don't handle to default window procedure */
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
---------------ここまで
(5)コマンドプロンプトを開く
plan-1
[マイ ドキュメント] を開く
vs フォルダを右クリックし、[Open Command Window Here] を 選択
plan-2
[スタート] [すべてのプログラム] [アクセサリ] [コマンドプロンプト] からコマンドプロンプトを開く
以下の2つのコマンドを入力して vs フォルダに移動する
cd "My Documents"
cd vs
(6)コンパイル
cl /c hello.cpp
link hello.obj user32.lib gdi32.lib
(7)実行
hello.exe
[参考]
HTML output
http://www.paulgriffiths.net/program/c/srcs/winhellosrc.html