WideStudioでコンソールアプリケーション

公開日:  最終更新日:2014/06/05

すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。

ℹ️本記事にはPRが含まれています。

ちょっと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();


さって、開発開発! 


 

  • このエントリーをはてなブックマークに追加
  • Pocket

関連前後記事

Your Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

PAGE TOP ↑