• ベストアンサー

初心者です。

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

  • Ginga
  • お礼率69% (64/92)

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

  • ベストアンサー
  • 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

  • インデントってどうやって表示するの?

    プログラムのソースプログラムをウェブに載せたいのですがホームページビルダーなどに ソースをこぴぺすると全て字下げがなくなってしまいます。 こんな感じです。 #include<stdio.h>   int main(){     printf("hello\n");   return 0; } これが #include<stdio.h> int main(){ printf("hello\n"); return 0; } こうなってしまうわけですね。 字下げはTABキーのインデントで行っています。 1行ずつスペースを書いていけばいいのでしょうけど 何しろ何百行もあるソースですのでそれは無理です。 字下げを失わずにHTMLに変換することできないでしょうか?

    • ベストアンサー
    • HTML
  • 本当に第一歩から躓いていますがVisual C++2008で

    本当に第一歩から躓いていますがVisual C++2008で の設定の仕方どうプログラムを書くまでの手順を細かく教えて下さると嬉しいです 仕様が変わっているのかサイトに書いてある手順でやってもエラーになり、どうしていいか わかりません プロジェクト新規で作る (win32コンソールアプリケーション、コンソール、空のオブジェクト) ファイル作る (c++のソースで) これ貼り付けてF5実行 エラーでる・・ #include <iostream.h> int main() { cout << "やぁ、こんちは。" << endl; return 0; }

  • コンパイルエラー

    本日からC++を勉強しはじめました。 使用しているコンパイラはBORLAND C++ COMPILER 5.5 です。 #include<iostream> int main(){ cout<<"hello"; return 0; } 上記をコンパイルすると下記のエラーが出ます。 いったいどこがいけないのでしょうか。 どなたか教えてくださいませ。 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 123.c: 致命的エラー F1003 C:\BORLAND\BCC55\include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H *** 1 errors in Compile *** *** コンパイル終了 ***

  • VC++ iostreamの不具合(?)

    手強いVC++のエラーです(対処が効かない #include <iostream> int main () {cout << "ggrks"; return 0;} C2065エラー 'cout' : 定義されていない識別子です。 #include <iostream.h> int main () {cout << "Hello C++!"; return 0;} C1083エラー include ファイルを開けません。'iostream.h': No such file or directory iostream(拡張子無)はCドライブのプログラムファイル、Microsoft Visual Studio 9.0\VC\includeに存在してます。 パスは許可してあります。 ツール→VC++ディレクトリ→インクルードファイルで C:\Program Files\Microsoft Visual Studio 9.0\VC\include と C:\Program Files\Microsoft Visual Studio 9.0\VC\include\iostream もついでに。 インストが完全でなかったのかと思い、「修復又は再インストール」で再インストしましたが変わりません。 気分転換(?)に一回アンインストールしてから再インストール(あまり意味ありませんけど)しても同様です。 どうすれば良いでしょうか。ご教授願います。

  • 【C++】アドレス演算子について質問です。

    アドレス演算子について質問です。 下記のように"&"を関数名の前に付けた場合下記のように出力されます。 &グローバルメソッド:002E1226 &クラス::メンバメソッド:1 1行目はグローバルメソッドなので実態が存在するのでメソッドのアドレスが表示されている。 2行目は実態が存在しないと思うのですが、あってますでしょうか? また、何故1が表示されてしまうのでしょうか? -------------------------------------------------------- #include "stdafx.h" #include <iostream> using namespace std; class Class1{ public: void f(){ return; } }; void Func1(){ return; } int main() { cout << "&グローバルメソッド:" << &Func1 <<endl; cout << "&クラス::メンバメソッド:"<< &Class1::f <<endl; getchar(); return 0; }

  • C++でタスクマネージャーを最小化

    C++Win32コンソールアプリケーションを作成しています。 タスクマネージャーを最小化させるプログラムを考えているのですが、上手くできません。 #include<iostream> #include<windows.h> using namespace std; int main() { for (;;) { HWND hwnd = FindWindow("TaskManagerWindow", NULL); if (hwnd != NULL) { cout << "成功" << endl; ShowWindow(hwnd,SW_MINIMIZE); } else cout << "失敗" << endl; Sleep(300); } return 0; } のようにしているのですが上手くできません。 Notepadのようなファイルは最小化できるのですが、タスクマネージャーに限ってできないのです。 どのようにすればよいでしょうか。 又、一時的に見えなくすればいいので終了や透明化等の他の方法でも構いません。 ご教授お願いします。

  • 6行ソースをコンパイル可能にしてください

    std::fflush(stdout); という所が間違っているんだと思いますが#include <iostream>は#include <iostream.h>にせずにコンパイルしたいです。 #include <iostream> int main(){ std::cout << "h\n"; std::fflush(stdout); return 0; }

  • c++ 初心者です。cout 日本語表示です。

    win10 home 64bit に vs2017community をインストールしました。 vc++ 始めたばかりです。 #include <iostream> using namespace std; int main() { cout << "日本語"; return 0; } 表示されませんでした。 setlocale(LC_CTYPE, "jpn"); cout << "日本語"; で、表示されました。それで疑問なのですが、この setlocale(LC_CTYPE, "jpn"); を、書かなくても済む方法がありますか? 宜しくお願いします。

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • 初心者です。エラーが分かりません。

    エラーが二つ出てしまいます。 自分ではよく分からなく、図々しく質問しました。 誰か助けてください。 #include<iostream> using namespace std; double fan(double,double angle=360.0); /* angleはデフォルト360 */ double fan(double r, double angle){ return 3.1415926*r*r*angle/360.0; /* 面積を返す */ } int main(void){ double r,angle; cout << "半径を入力してください。 : "; cin >> r; cout << "角度を入力してください。 : "; cin >> angle; cout << "半径 : " << r << " 角度 : " << angle << endl; cout << "面積 : " << fan(r,angle) << endl << endl; cout << "半径 : " << r << " の円なら" << endl; cout << "面積 : " << fan(r) << endl; return 0; }

専門家に質問してみよう