ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

フォーム内に電卓を格納(SetParent) 

更新 : 2010/05/28

 



解説:
今回の Tips は特に使う必要はありませんが、うまく使うと案外面白いアプリケーションが作れるかもしれません。
何をするか、と言いますと、SetParent 関数を使って起動したフォーム内に電卓を表示してみます。

この関数は、指定したウィンドウの親ウィンドウを変更してくれます。

HWND SetParent(
    HWND hwndChild,         // ウィンドウのハンドル
    HWND hwndNewParent // 新しい親ウィンドウのハンドル
);

第一引数に電卓のハンドル、第二引数にフォームのハンドルを渡すと、電卓の親がフォームになり、フォーム内に電卓が格納されます。

使用例:
電卓とアプリケーションを起動して、フォームを右クリックします。ポップアップメニューから 「電卓を格納」 を選ぶと、電卓がフォーム内に表示されます。

準備として、PopupMenu をひとつ配置するだけです。
Form1 のPopupMenu プロパティに PopupMenu1 を設定します。
PopupMenu1 には、Calc1 というメニューを作り、Caption を 「電卓を格納」 としておきます。

Calc1 の OnClick イベントハンドラで、電卓のハンドルを FindWindowEx 関数(Tips参照)で取得します。
取得したハンドルを、SetParent 関数に渡します。
これで電卓がフォーム内に表示されるようになります。

SetParent 関数の前には、スコープ(アクセス)解決演算子を付けてあります。VCL の SetParent 関数で隠されている Win32API の SetParent 関数を見えるようにするためです。

//-------------------------------------------------------------------
void __fastcall TForm1::Calc1Click(TObject *Sender)
{
    HWND hWnd = FindWindowEx(0, 0, "SciCalc",0);

    if (hWnd != 0) ::SetParent(hWnd, Handle);
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.