パソコンによる動画計測とその周辺 / 1.動画処理のための準備 / 1.2 WinAPIの準備◆DOS窓から窓を開く
目次 1.2 WinAPIの準備

◆DOS窓から窓を開く

 メモリ操作,スレッド操作のAPIは,ともにコンソールアプリケーションから利用できます.Win32ではコンソール,つまりDOS窓と通常のウィンドウはほぼ同様に扱うことができます.

 それでは,コンソールアプリケーションから通常のウィンドウは開けないのでしょうか.

 CreateWindow()などでは,インスタンスハンドルが必要です.WinMain()とmain()の引き数を比べてみても,システムからインスタンスハンドルだけは得ることができません.

 ところが,Win32ではどのアプリケーションも同じインスタンスハンドルの値を取ることがわかっています.そこで,GetWindowLong()を使ってデスクトップのインスタンスハンドルを得て,それで代用してみることにします.

 リスト8.c1では定番helloのウィンドウをDOS窓から開きます.VCではDOS窓から起動されるアプリケーションをコンソールアプリケーションと呼びmain()で始まります.このmain()にメッセージループを置いてここからメッセージの配信も行えます.リスト8.c1ではメッセージループとウィンドウプロシージャの両方でメッセージの内容をDOS窓にモニタするようにしています.これを見るとメッセージループから配送されるメッセージ以外にも直接ウィンドウプロシージャを呼び出しているメッセージがあることがわかります.前者がPostMessage()による配信,後者がSendMessage()による配信ということです.