• ベストアンサー

初心者です。

VisualC++でWin32 Applicationで作るときの、 三行目にはなんと書くんですか? --図-- #include <???.h> ここの行です。 { cout << "hello"; return 0; } 知っている方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • xinman
  • ベストアンサー率30% (25/83)
回答No.6

早速実行した見たいですね。 >実行したとき白いすじのようなものが見えます。(文字の所) >気になります。 それはまさに文字を書いている瞬間を目撃しているのです。 WinProcを次の関数に置き換えると「白いすじのようなもの」は無くなります。 LRESULT CALLBACK WndProc(HWND hWnd,UINT uiMessage,WPARAM wParam,LPARAM lParam) { PAINTSTRUCT ps; HDC hDC; switch(uiMessage) { case WM_PAINT: hDC=BeginPaint(hWnd,&ps); TextOut(hDC, 150/*X座標*/, 100/*Y座標*/, "Hello!"/*表示する文字列*/, 6/*表示する文字数*/); EndPaint(hWnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd,uiMessage,wParam,lParam); }; return 0; };

Ginga
質問者

お礼

確かに直ってますね。ありがとうございました。

その他の回答 (5)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.5

こんにちは、honiyonです。  どちらかというと、そのプログラムはコンソールアプリケーションで、「void main()」の方が適切な気がします。  その分からない部分はプログラムではなく構文にあたりますね。 そのような場合ここで質問するより、教科書や参考書を読んだ方が圧倒的に早く理解できると思いますよ。実力もつきやすいと思います。  大きなお世話であれば申し訳ありません(..

Ginga
質問者

お礼

ナルホドヒレハレ。ありがとうございました。

  • xinman
  • ベストアンサー率30% (25/83)
回答No.4

xinman再びです。 たぶん、これくらい書かないと。 分からないところがたくさんあると思いますが これから勉強していきましょう。 教えて!gooもあるし… 以下プログラム #include<WINDOWS.H> LRESULT CALLBACK WndProc(HWND hWnd,UINT uiMessage,WPARAM wParam,LPARAM lParam) { HDC hDC; switch(uiMessage) { case WM_PAINT: hDC=GetDC(hWnd); TextOut(hDC, 150/*X座標*/, 100/*Y座標*/, "Hello!"/*表示する文字列*/, 6/*表示する文字数*/); ReleaseDC(hWnd,hDC); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd,uiMessage,wParam,lParam); }; return 0; }; int WINAPI WinMain(HINSTANCE hThis,HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd) { LPSTR lpszName="TEST_WINDOW"; WNDCLASS wc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.lpfnWndProc=WndProc; wc.lpszClassName=lpszName; wc.lpszMenuName=NULL; wc.style=0; wc.hInstance=hThis; if(!RegisterClass(&wc))return 1; HWND hWnd; hWnd=CreateWindow(lpszName, "WINDOW_TITLE"/*ウインドウのタイトル*/, WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0/*ウインドウの左端の座標*/, 0/*ウインドウの上端の座標*/, 400/*ウインドウの幅*/, 300/*ウインドウの高さ*/, NULL,NULL,hThis,NULL); if(!hWnd)return 2; MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }; return msg.wParam; };

Ginga
質問者

お礼

ご丁寧にどうも。 細かい事ですが、 実行したとき白いすじのようなものが見えます。(文字の所) 気になります。ありがとうございました。

  • skoga
  • ベストアンサー率14% (1/7)
回答No.3

期待しているのはこれでしょうか。 いろいろ足りないかと思いますが。 int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)

Ginga
質問者

お礼

ありがとうございます。 でも、そこだけ変えてもだめみたいです。

  • xinman
  • ベストアンサー率30% (25/83)
回答No.2

Win32 Applicationとは 他のWindows用のアプリケーションと同様に ウインドウを作成するプログラム環境です。 したがってWin32 Console Applicationみたいに 記述しただけでは簡単には動きません。 それでも、質問に対する回答としてしては #include<WINDOWS.H> int WINAPI WinMain(HINSTANCE hThis,HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd) { という書き出しにはなります。 ただ、これだけではプログラムが動作するとは思えないので 質問を締め切らずにお待ちいただけるのであれば 動くプログラムを別回答でアップしようと思います。 それでは、またあとでお会いいたしましょう。

Ginga
質問者

お礼

確かにエラーが出ました。 >質問を締め切らずにお待ちいただけるのであれば >動くプログラムを別回答でアップしようと思います。 お願いします。ありがとうございました。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

int PASCAL WinMain( HINSTANCE hinstCurrent, /* 現在のインスタンスのハンドル */ HINSTANCE hinstPrevious, /* 以前のインスタンスのハンドル */ LPSTR lpszCmdLine, /* コマンド ラインのアドレス */ int nCmdShow /* 表示ウィンドウのタイプ (オープンまたはアイコン) */ ) という感じ。もちろん、変数名は何でも良いし、コメントまで、 同じにする必要はないです。インクルードするのは windos.h 。 でも、質問にあるような内容のプログラムを書きたいのであれば、 Win32 Application ではなく、Console Application で書きましょう。

Ginga
質問者

お礼

ありがとうございました。 確かにこんなのはConsole Application で作るべきだと思います。 (でもあれはとりあえず何か書こうとしただけです)

関連するQ&A