ポップアップフォームを置く <TOP>
ClientToScreen 指定されたウィンドウ上の点の座標を、クライアント領域の座標からスクリーン座標に変換
ShowWindow 指定されたウィンドウの表示状態を設定
SetWindowPos フォームを常に表示
'================================================================ '= EditBoxの下にポップアップフォームを置く '= (ShowWindow.bas) '================================================================ #include "Windows.bi" Type POINTAPI X As Long Y As Long End Type ' 指定されたウィンドウ上の点の座標を、クライアント領域の座標からスクリーン座標に変換 Declare Function Api_ClientToScreen& Lib "user32" Alias "ClientToScreen" (ByVal hWnd&, lpPoint As POINTAPI) ' 指定されたウィンドウの表示状態を設定 Declare Function Api_ShowWindow& Lib "user32" Alias "ShowWindow" (ByVal hWnd&, ByVal nCmdShow&) ' フォームを常に表示 Declare Function Api_SetWindowPos& Lib "user32" Alias "SetWindowPos" (ByVal hWnd&, ByVal hWndInsertAfter&, ByVal X&, ByVal Y&, ByVal cx&, ByVal cy&, ByVal wFlags&) #define SW_SHOWNOACTIVATE 4 '直前の位置とサイズで表示。アクティブなウィンドウはアクティブな状態を維持。 #define HWND_TOPMOST -1 'ウインドウをウインドウリストの一番上に配置 #define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持 #define SWP_NOMOVE &H2 'ウインドウの現在位置を保持 Var Shared Form2 As Object Var Shared Edit1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var Ret As Long Form2.CreateWindow "Form2", 0 Form2.SetFontSize 14 Ret = Api_SetWindowPos(Form2.GethWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var pt As POINTAPI Var Ret As Long pt.X = 0 pt.Y = Edit1.GetHeight Ret = Api_ClientToScreen(Edit1.GethWnd, pt) Form2.MoveWindow pt.X, pt.Y Form2.SetWindowSize Edit1.GetWidth, Edit1.GetHeight * 2 Form2.Symbol(3, 2), "Form2", 1, 1 Ret = Api_ShowWindow(Form2.GethWnd, SW_SHOWNOACTIVATE) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End