• ベストアンサー

コマンドラインアプリケーション

Cで、Windowを出さずに、コマンドラインで、 入力をやり取りしながらの、アプリケーション を作りたいと思っています(練習で、WINAPIを 使いたいだけなので)。 以下のようなコードで、メッセージボックスが 表示されなくなってしまいます(止まってしまう)。 int WINAPI WinMain(HINSTANCE hi,HINSTANCE phi,LPSTR lpstr,int cmd){  int num;  printf( "何か数字を入力して下さ\n" );  scanf( "%d", &num );  printf( "入力されたのは%d\n",num);  MessageBox(NULL,"OK?","start",MB_OK);  return 0; } ここで、scanfなどの関数を使わなければ、 メッセージボックスが表示されます。 標準入力で入力してもらい、必要なら、 メッセージボックスをだして、といった 感じで作りたいのですが。 よろしくお願いします。 ちなみに、使っているのは、lccとかいう コンパイラです。

  • rheda
  • お礼率69% (257/372)

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

  • ベストアンサー
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

うーん、.netの環境だと別段動きますしね。 ボーランドのフリーのC/C++コンパイラー使ってみるのはどうでしょう?

参考URL:
http://www.forest.impress.co.jp/lib/stdy/program/progdevenv/borlandcpp.html
rheda
質問者

お礼

回答ありがとうございます。 実は、べつのパソコンだと 動きました。 こうなると、難しい問題になりそうなので、 MessageBoxを使うのは、控えようと 思います。

その他の回答 (2)

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.3

いま手元にWin機が無いので確認できませんが、 単にint main(int argc, char* argv[])で書いたのではダメですか? もちろん#include <windows.h>はするとして。

rheda
質問者

お礼

回答ありがとうございます。 確かに、動きました。 その理由を調べて、使いたいと思います。 (コマンドライン入力を使うときは、 いずれにせよ書いたほうがいいのかも)。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

素朴に、WINAPI使いたいだけならダイアログベースで作った方が簡単だと思います。

rheda
質問者

お礼

回答ありがとうございます。 フリーのコンパイラだけで、ダイアログ が出せるコンパイラがあれば いいのですが。

関連するQ&A

  • HINSTANCEの型

    LPSTR は char* なので、 int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , LPSTR lpCmdLine ,int nCmdShow ) を int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , char* lpCmdLine ,int nCmdShow ) と書き換えてもコンパイルできます。 HINSTANCEはvoid *型だという記述を見たのですが、void *で書き換えてもエラーがでてしまいます。 どうしたらよいのでしょうか。

  • VS2010 C++ エラーについて

    Visual Studio2010のC++を使用しているのですが、DLLにメッセージボックスを使用したいと思っています。 .cppに #include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance , LPSTR lpCmdLine, int cmdShow) { MessageBox(NULL,"○○○","△△△",MB_OK); return 0; } 上記のようなソースコードを使って見ると、○○○と△△△の部分でエラーを吐きます。 どのようにすれば改善されるか教えてください。

  • Windowsアプリケーションをどうしても作りたいのですが

    /* OS==XP コンパイラー==Borland C++5.5 */ #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } で Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) となるのでexeファイルができません。 解決法を是非教えてください。 C言語歴2日+1H

  • C言語で黒い画面が出る

    gcc使ってC言語を勉強していますが、スタートmainをwindowsにしても黒い画面が出てきます。これを消すことはできませんか。やりたいことは単にメッセージボックスを表示して簡単なファイル入出力するだけです。ソースコードは以下 #include <windows.h> #include <tchar.h> int WINAPI WinMain( HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { MessageBox( NULL, _T("Hello, Windows!"), _T("sample"), MB_OK); return 0; }

  • VS2019でWinMainエラー発生

    以下メッセージを表示するだけのプログラムですが、以前はビルドできたのですが、VS2019になってからWinMainで「整合性のないインスタンス・・・」とエラーが出ます。なんででしょうか。 お願いします。 またVCをVBSみたいに黒い画面が出ずに引数を使用したいですが、その他アドバイスもお願いします。 #include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox( NULL, TEXT("Hello, world!"), TEXT("Hello"), MB_OK | MB_ICONINFORMATION ); return 0; }

  • 次のWindowsアプリで

    メッセージボックスは他のアプリのWindowの下に隠れることはないのですが他のアプリのウィンドウをクリックするとメッセージボックスの焦点がぼけアクティブでなくなります メッセージボックスを常にアクティブにする方法を終えてください #include <windows.h> using namespace std; WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int) { HWND hW; hW=CreateWindow("STATIC","",WS_OVERLAPPED, 0,0,9,9,NULL,NULL,hI,NULL); SetWindowPos(hW,HWND_TOPMOST,0,0,9,9,NULL); MessageBox(hW,"OK?","",MB_OK); return 0; }

  • 外部シンボル "_main"は未解決です

    「LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です」というエラーが発生しましたが、何をみればいいのかわかりません。int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )がソースについています。

  • EXEでMessageBoxを作る方法

    Microsoft visual c++でメッセージボックスを作りました。 それをEXEの形にしたいのですが、どうすれば良いのでしょうか? 詳しく教えていただけるととても助かります。 ちなみに下記がVisual c++で作ったメッセージボックスのソースです。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , TEXT("how are you?") , TEXT("メッセージボックス") , MB_OK); return 0; }

  • 画像が出力されません

    画像出力するには int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); から引数"lpCmdLine"を使うことにより画像が出力できる事を聞いたのですが本当でしょうか? うまく出力できません どのようにしたらよいのか具体的にソースをつけて教えてください。 画像はraw画像で出力します

  • ループ

    #include<stdio.h> int main(void) { int i=1,sum=0; int num=1; while(num>0) { printf("整数を入力してください。(マイナスの値で終了)\n"); scanf("%d",&num); printf("%dが入力されました。(%d番目の繰り返しです)\n",num,i); sum+=i; printf("1から%dまでをたすと%dです。\n",i,sum); i++; } printf("繰り返しが終わりました。\n"); printf("加算値は%dです。\n",sum); printf("%d回繰り返しました。\n",i); return 0; } このプログラムで101以上の数値は加算しないようにするにはどうすればいいですか。

専門家に質問してみよう