連載:VB 6ユーザーのための
これならマスターできるVB 2005超入門

第12回 VB 2005でWin32 APIを利用する

羽山 博
2007/10/26
Page1 Page2 Page3 Page4

.NET Frameworkの限界を超える?!

Back Issue
1
VB 6の皆さん、これはもうVB 2005使うしかないでしょ
2
コントロール配列がなくても大丈夫!
3
VB 2005の“My”の便利さに脱帽!
4
トラブルは水際で防げ〜入力時のチェックとエラー処理
5
データベースはじめの一歩
6
配列ってこんなに便利だったの!?
7
リソースを使ったマルチ・リンガルなVBアプリケーション
8
ファイル入出力をマスターしよう
9
そろそろまじめにクラスに取り組んでみようか
10
今月は部品化月間 〜 ユーザー・コントロールを作成する
11
初めてのマルチスレッドと排他制御入門

 1年と少しの間にわたって続けてきたこの連載も、今回で一応の区切り。最終回となった。これまで、Visual Basic 2005(以下、VB 2005)の新機能を中心に、プログラミングの基礎からクラスの利用、ユーザー・コントロールの作成、マルチスレッド・プログラム、データベースの利用など、重要と思われることを一通り見てきた。

 ただ、主にビジネス・アプリケーションを念頭に置いてきたので、サンプル・プログラムはすべてVB 2005と.NET Frameworkのクラス・ライブラリを利用すれば作成できるものであった。今回は最終回にふさわしく、その限界を超えるようなプログラムを作ってみたい。.NET Frameworkのクラス・ライブラリだけではできないことというと、Win32 APIが思い浮かぶ人もいるかと思うが、まさにそのとおり。ちょっと便利なユーティリティ・プログラムの作成を通して、Win32 APIの基本的な呼び出し方について見ていくこととする。

 Visual Basic 6.0(以下、VB 6)でWin32 APIを利用していた人にはわざわざ説明することでもないが、APIとは「Application Programming Interface」の略で、簡単にいってしまえばオペレーティング・システムの機能をプログラムから利用できるように公開したもの、といった意味。Win32 APIは(32bit)WindowsのAPIなので、これを利用すれば、Windowsのほとんどすべての機能を呼び出せるというわけだ。

 とはいえ、能書きばかり並べていてもイメージがわかないので、サンプル・プログラムを通して具体的にWin32 APIの呼び出し方を見てみよう。

サンプル・プログラム18 − ウィンドウのサイズを変更するプログラム

 今回のサンプル・プログラムは、ウィンドウのサイズを変更するためのプログラム。当然のことながら、自分のウィンドウ・サイズを変えるだけなら簡単。それなら小学生にでもできる。このプログラムは、ほかのプログラムのウィンドウのサイズを変えるものである。

 例えば、エクスプローラのウィンドウ・サイズをちょうど800×600ピクセルになるように変えることができる。ウィンドウの境界をドラッグして、ピクセル単位で正確にサイズをそろえることは極めて難しいが、このプログラムを使えば簡単。とりわけ、スクリーンショットを撮るときに便利だ。

 実は、このプログラムは、私が10年前にVisual C++(とMFC、Win32 API)で作ったプログラムの焼き直しなのだが、書籍や雑誌、論文などの図版作成にとても役に立っている。10年間使い続けたプログラムというのも珍しいが、恐らくこれからの10年、さらにはその先も生き残るであろう、便利なプログラムだ。

 図1に示したのが、プログラムの実行画面だ。[固定サイズ]グループにあるラジオボタンをクリックするか、[フリーサイズ]グループで直接、幅と高さを入力すれば、ウィンドウのサイズが指定できる。続いて、[サイズ変更]ボタンをクリックした後、ほかのウィンドウをクリックすれば、クリックされたウィンドウのサイズが一瞬にして変わる。

図1 ウィンドウのサイズを変更するプログラム
  または でウィンドウのサイズを設定する。 の[サイズ変更]ボタンをクリックした後、目的のウィンドウをクリックすれば、クリックされたウィンドウのサイズが指定した幅と高さに変わる。

 では、フォームのデザインから見ていこう。

■フォームのデザイン

 フォームのデザインには難しいところはない。図1のプログラムの実行例に従って、コントロールを配置していけばよい。

 注意すべき点としては、VB 6でフレーム(Frame)と呼ばれていたコントロールの代わりにグループボックス(GroupBox)コントロールを使うこと、オプションボタン(OptionButton)コントロールの代わりに、ラジオボタン(RadioButton)コントロールを使うことぐらいだ。

 図2がコントロールを配置した画面、表1が設定すべき主なプロパティである。このプログラムでは、プログラムの起動時に[800x600]のラジオボタン(rbSize2)をオンにしておくことにするので、rbSize2のCheckedプロパティをTrueにしておこう。

図2 フォームのデザイン
フォームにグループボックス・コントロールを2つとボタン・コントロールを2つ配置する。1つ目のグループボックス・コントロールの中にラジオボタン・コントロールを4つ配置し、2つ目のグループボックス・コントロールの中にラベル・コントロールを2つ、テキストボックス・コントロールを2つ配置する。

番号 コントロール プロパティ 設定値
Form Name frmSetting
CancelButton btnClose
FormBorderStyle FixedDialog
MaximizeBox False
Text ウィンドウ・サイズの変更
GroupBox Name GroupBox1
Text 固定サイズ(&F)
RadioButton Name rbSize1
Text &640x480
RadioButton Name rbSize2
Checked True
Text &800x600
RadioButton Name rbSize3
Text &1024x768
RadioButton Name rbSize4
Text &1280x1024
GroupBox Name GroupBox2
Text フリーサイズ(&S)
Label Name Label1
Text 幅(&W):
TextBox Name txtWidth
Text (なし)
Label Name Label2
Text 高さ(&H):
TextBox Name txtHeight
Text (なし)
Button Name btnResize
Text サイズ変更(&R)
Button Name btnClose
Text 閉じる(&C)
表1 コントロールに設定するプロパティとその値の一覧
赤丸数字は図2に示した各コントロールに対応している。

 なお、タブ・オーダーは、上から下、左から右へと順に操作できるように設定しておく。[表示]メニューの[タブ オーダー]を選択し、フォーム上のコントロールを順にクリックしていきタブ・オーダーを設定しておこう。

 図3を見れば一目で分かるように、VB 2005ではコントロールの階層を反映したようなタブ・オーダーが簡単に設定できるようになっている。

図3 タブ・オーダーの設定
例えば、[固定サイズ]というグループボックスの中には、4つのラジオボタンがある(グループボックスがコンテナになっている)。このような階層を反映したようなタブ・オーダーの番号が付けられている。


 INDEX
  VB 6ユーザーのためのこれならマスターできるVB 2005超入門
  第12回 VB 2005でWin32 APIを利用する
  1.サンプル・プログラム18 − ウィンドウのサイズを変更するプログラム
    2.プログラムの考え方とWin32 APIの宣言
    3.マウスのャプチャとウィンドウのリサイズ
    4.フレーム・ウィンドウのハンドル取得
 
インデックス・ページヘ  「これならマスターできるVB 2005超入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH