ウインドウの出ない一発アプリの作りかたメモ。 コンソールアプリでそのまま作るとコンソール出ちゃうし Win32プロジェクトでウインドウ作らなきゃいいけど色々でかくなる。
Win32コンソールで作る。 int _tmain(int argc, _TCHAR* argv[]) を以下に入れ替え。 int WINAPI _tWinMain(HINSTANCE hinst, HINSTANCE, PTSTR pszCmdLine, int nCmdShow) stdafx.hを開いて #inlude <windows.h> を追加。逆に使わないなら以下削除。 #include <stdio.h> プロジェクトのプロパティを開いて リンカ→システム→サブシステムをWindows(/SUBSYSTEM:WINDOWS) C/C++→プリプロセッサのプリプロセッサ定義にある_CONSOLEを_WINDOWS 全構成変えなきゃなので、構成を「全ての構成」にしてからやると楽。
で、argc/argvが使えなくなるのでpszCmdLineから分解するのをでっち上げ。 自身のexe名は入ってないので必要なら別にやらないと駄目。 int argc = 0; TCHAR *argv[8]; if (_tcslen(pszCmdLine) > 0) { TCHAR *next; TCHAR *token = _tcstok_s(pszCmdLine, _T(" "), &next); while (token != NULL) { argv[argc++] = token; if (argc > 8) break; token = _tcstok_s(NULL, _T(" "), &next); }; } 8要素までで固定してるのはただの手抜き。 個数が必要なら十分な長さにするか、argvを動的確保して可変長対応とか。
後は普通にいける。 まあ結局コンソールよりは大きくなるんだけども。 それでもコード量はコンソールと大差なくてすっきり。
|