WideStudioでコンソールアプリケーション
すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。
ちょっとWideStudioで、コンソールアプリケーション(ウィンドウを持たない、DOS窓で実行するアプリケーション)を作ろうと思ってゴソゴソやっていたのですが、少々はまったところがあったので、作り方を書き残しておくことにします。
「プロジェクト」-「新規プロジェクト」で普通にプロジェクトを作ります。ここではあらかじめ「ConsoleApp」というフォルダを作っておいて、そこに作成しました。
そして「プロジェクト種別」で「Console Application」を選択し、あとは普通にプロジェクト生成します。
で、次は好みや目的での設定ですが、実行時にDOS窓とともに起動する場合は、リンクオプションを変更します。やり方は、「プロジェクト」-「プロジェクト設定」から「リンク」を選択し、「個別ライブラリ」の「-mwindows」をはずします。これをはずすことで、DOS窓付きで起動できるようになります。つけたままだと、DOS窓無しで起動できるのですが、なぜかDOS窓から実行してもDOS窓に接続できないんですよね…。
プロジェクトの生成が完了したら、ウィンドウを追加します。これがポイントで、自分がはまったところです。コンソールアプリケーションなので、ウィンドウなんていらないやと思っていたのですが、実は、必要でした(これがはまった原因)。
で、このウィンドウに対して、INITIALIZEイベントを設定して、そこに処理を書いてやればめでたくコンソールアプリケーションとなります。
テストということで、「TEST」という文字列を表示してキー待ちをするプログラムにしてみました(「EP_newwin000_INITALIZE」というのは、先にイベントに設定した関数名です)。stdio.hが書いてありませんが、なんかデフォルトで読み込まれているみたいです。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//———————————————————-
//Function for the event procedure
//———————————————————-
void EP_newwin000_INITALIZE(WSCbase* object){
puts( “TEST” );
getchar();
exit( 0 );
}
static WSCfunctionRegister op(“EP_newwin000_INITALIZE”,(void*)EP_newwin000_INITALIZE);
WideStudioからも実行できますが、試しにDOS窓から実行してみました。動作結果はこんな感じです。
いろいろいじっていて気づいたんですが、どうもスタティックリンクにするとDOS窓に接続できなくなるみたいです(バグかな…)。ちなみに、起動時パラメータを取るには、WSDappDev.hをインクルードして、以下のようなコードを書けば取得できるようです。
int argc = WSGIappDev()->getArgc();
char** argv = WSGIappDev()->getArgv();
さって、開発開発!
Your Message