技術情報(よくあるご質問と回答)
ご質問
最前面に表示されているウィンドウにフォーカスを移動させたいのですが、どのようにしたら実現できますか。
回答
ChangeFocus()関数を使用することで、最前面に表示されているウィンドウへのフォーカスの移動が実現可能です。
以下にChangeFocus()関数を使用したサンプルコードを記載いたします。
このサンプルは、パネル上でキーを押した場合にウィンドウにフォーカスが移動するサンプルです。
■最前面のモーダレスウィンドウにフォーカスを当てるサンプルコード
short GCPanel00000::PreKeyPress( unsigned short usKeyCode, unsigned long ulStatus,long *pReturnValue )
{
//{{_GUI_SCRIPT_FUNCTION_CALL(PreKeyPress)
GCScreen *pScreen = NULL;
GCFrame *pFrame = NULL;
GCWindow *pWindow = NULL;
GCPanel *pPanel = NULL;
GCBaseWindowList *pWindowList = NULL;
void *pvItem = NULL;
/*スクリーンオブジェクト取得*/
pScreen = GCWGetScreen();
/*フレームオブジェクト取得*/
pFrame = pScreen->GetFrame();
if( !pFrame ){
/* フレームが見つからなかった場合処理を抜ける*/
return FALSE;
}
/*パネルオブジェクト取得*/
pPanel = (GCPanel*)pScreen->GetPanel();
/* ウィンドウリスト取得*/
pWindowList = pFrame->GetChildList();
/* リストの検索位置を初期化*/
if( pWindowList->FindLastItem() == FALSE ){
return TRUE;
}
/* リストの検索処理*/
if( pWindowList->FindPrevItem( (GCBaseWindow**)&pWindow ) == TRUE ){
pPanel = (GCPanel*)pWindow->GetPanel();
if( pPanel ){
/*最前面のウィンドウに対してフォーカスを当てる*/
GCWGetScreen()->ChangeFocus( pPanel );
}
}
return TRUE;
}
対象製品バージョン:Ver.2.00.000
管理番号:FG_G10084
資料更新日: 2009年2月26日
※この資料は、資料更新日現在のものです。