|
|
|
2-5-5. フレームバーの初期化とウインドウの作成と破棄ここでは、フレームバーモジュールを使用する際の初期化の方法と、ウィンドウを作成する方法を説明します。フレームバーの初期化とウインドウの作成と破棄 FrameBar.c のテストプログラムでは、ウィンドウプロシージャの、WM_CREATE,WM_DESTROY メッセージで以下の実行をしています。 static PFBSYS pfbs = NULL;
switch (uMsg)
{
case WM_CREATE: // メインウィンドウの新規作成
{
HINSTANCE hInst;
hInst = (HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
pfbs = InitFrameBar(hInst,hWnd);
hHello = CreateWindowEx(WS_EX_CLIENTEDGE,pHelloClass,
NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE,
0,0,0,0,
hWnd,NULL,hInst,pfbs);
hFrame = CreateFrameBar(fSplit);
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE|WS_VSCROLL|
ES_AUTOVSCROLL|ES_MULTILINE|ES_NOHIDESEL,
0,0,0,0,
hWnd,(HMENU)1000,hInst,NULL);
SetWindowText(hEdit,"This is Edit Control."
"\r\n\r\n入力できます。");
return 0;
}
case WM_DESTROY: // ウィンドウを破棄する
{
if (hHello) DeleteObject(hHello);
if (hEdit) DeleteObject(hEdit);
DestroyFrameBar(hFrame);
TermFrameBar();
PostQuitMessage(0);
return 0;
}
これらは、メインウィンドウの新規作成時と破棄時のメッセージです。フレームバーは、最初に、InitFrameBar 関数をコールしなければいけません。また終了時は、DestroyFrameBar 関数をコールします。これらはアプリケーションで1回だけ、起動時と終了前にコールします。InitFrameBar はウィンドウクラスを登録し、グローバルなシステム変数を設定し、使用する描画のオブジェクトを作成します。渡すパラメータは、インスタンスとフレームバーの親のウィンドウのハンドルです。これらは途中で変更できません。成功すれば、FBSYS 構造体のポインタを返します。この構造体のメンバをHelloウィンドウのプロシージャで使用しますので、次の、CreateWindowEx(,pHelloClass..)のlParamに渡します。TermFrameBar にはパラメータはありません。
フレームバーの作成は、CreateFrameBar 関数です。縦線のフレームバーなら、FBF_VLINE を与え、横線のフレームバーなら、FBF_HLINE を与えます。成功すれば、フレームバーのウィンドウのハンドルを返します。この関数では、フレームバーのサイズはすべて0で作成します。この段階では大きさは決定しません。サイズは、WM_SIZE メッセージで設定します。
|