Windowsプログラム

Win32APIとは

えーと、前回、ファイル操作をやりました。入門レベルは卒業ということです。
というわけで今回からレベルを上げて、Windowsプログラムをはじめます。
WindowsプログラムはWin32APIをつかいます。API=Application Program Interface。簡単にいうと、Windows専用の関数です。
いままでprintf関数やscanf関数を使いましたが、これは標準Cライブラリ関数でC言語ならどのOSでも使えます。
しかしWin32APIはWindowsで32ビットOSでしか使えません。まあ32ビットのActiveBasicでは気にすることもありませんが。

Win32APIは沢山沢山関数があります。数え切れないほどあります。
ABのヘルプに載っているWin32API関数はほんの一部です。

とりあえず、やってみる

とりあえず、Win32APIを使ってみましょう。
今回使うのは定番のMessageBox関数です。
MessageBox(ウインドウハンドル , テキスト , タイトル文字 , タイプ)
簡単です。
ウインドウハンドルはウインドウを個別の番号で、メッセージボックスの親ウインドウを指定します。
特に親を必要としないときは0でもかまいません。
テキストとタイトル文字は、文字列を指定します。
タイプは、MB_OKとかMB_ICONSTOPをヘルプを見ながら指定します。

'今回は、VCランタイムもコンソール画面も使いません。
'だから#includeはありません。

MessageBox(0 , "初めてのWin32API" , "ABC-Hikky" , MB_OK)
これだけです。
実行するとよく見かけるウインドウ(ダイアログとも言う)が出てくるはずです。

ウインドウハンドルで遊ぶ

せっかくウインドウハンドルという単語が出てきたので、これを使って遊んでみます。
今回使うAPIは全てABのヘルプに載っています。
ではコードです。
#console'コンソールウインドウを作るため必要です!
'今回もVCランタイムは使いません。

Dim hWnd As HWND'ウインドウハンドルを入れる。

'1番上のウインドウのハンドルを取得。
'多分自分が1番上になっていると思います。
hWnd = GetForegroundWindow()

'これでウインドウの名前が変わります。
SetWindowText(hWnd , "ABC-Hikky_G")

'ウインドウをいたずらする。
Dim x As Long
For x = 0 To 400 Step 50
  MoveWindow(hWnd , x , 0 , 200 , 200 , TRUE)
  Sleep(500)
Next

MessageBox(hWnd , "OKクリックで終了!!" , "ABC" , MB_OK)
今回のMessageBoxで、ウインドウハンドルを指定する意味が分かると思います。
指定したウインドウが操作できなくなります。
このプログラムは特に意味はありませんが、ウインドウ関連のAPIの使い方がなんとなく分かればよいと思っています。