選択できるスタティックエディット

 マイコンピュータから右クリックしてプロパティを表示してみてください。使用者名と製品IDが表示されていると思います。そして、この2つはなんと選択できます。ドラッグしてからコピーを選べば、他のテキストにペーストすることができます。

 この機能を使うと、例えばメールアドレスなど見ながら打ち込むのが難しい文字列も簡単にコピー&ペーストできます。KAB−studioの各フリーウェアのプロパティ表示でも、メールアドレスとホームページのURLをこのタイプにして、メールを送りやすくしたりホームページを開きやすくしたりしています。

 ですが、通常スタティックテキストはドラッグできません。ではどうやっているのでしょう。

 実は、これはスタティックテキストではありません。実はエディットボックスです。では「バージョン情報」ダイアログに、スタティックテキストみたいなエディットボックスを作る方法を見ていきましょう。

 まず、エディットボックスをダイアログに張り付けます。次に、エディットボックスのプロパティを開いて、「スタイル」−「読みとり専用」のチェックボックスを選択します。
 こうすると、外見はまるでスタティックテキストと変わらなくなります。メニューの「レイアウト」−「テスト」で実際に見てみてください。

 さて、このままではこのエディットボックスに何も表示されません。その文字列を書き込むコーディングをしていきましょう。

 まず、このエディットボックスに関連づけされたメンバ変数を作成します。クラスウィザードの「メンバ変数」のページでそのダイアログクラスを開いてください。コントロールにそのエディットボックスのコントロールIDがあるはずです。そのエディットボックスにCString型のメンバ変数(ここではm_cEditBoxStrとします)を関連づけてください。

 次に、アプリケーションのCWinApp派生クラス(ここではCKABAppとします)のOnAppAbout()メンバ関数の部分を開いてみてください。このメンバ関数は「ヘルプ」−「バージョン情報」を選択した時のメッセージに関連づけられています。
 この関数を、次のように変更します。


// ダイアログを実行するためのアプリケーション コマンド
void CKABAppApp::OnAppAbout()
{
	CAboutDlg cDlg;
	
	cDlg.m_cEditBoxStr = _T( "[email protected]" );
	cDlg.DoModal();
}
	

 このように、ダイアログボックスを開く直前にエディットボックスに関連づけられたメンバ変数へと文字列を代入すればいいわけです(_TUnicodeに対応するためのマクロです)。

 以上がエディットボックスをスタティックコントロールに見せかけて、文字列を選択できるようにする方法です。ちっちゃなことだけど、結構便利です。

 それと、この方法を使うと「スタティックコントロールの文字列を動的に変化させる」こともできます。ん? きっとこっちの方が本命なんだね。最初に上げた「使用者名」はこのためにそうなっているんだと思います。

(C)KAB-studio 1997 ALL RIGHTS RESERVED.