#include "Form.ab" Namespace ActiveBasic Namespace Windows Namespace UI Class Dialog Inherits Form Public Function DoModal(hwndParent As HWND) As Long Dim temp[31] As Byte SetWord(temp + 0, 1) '拡張テンプレート SetWord(temp + 2, &hffff) SetDWord(temp + 12, DS_MODALFRAME Or WS_SYSMENU) StartWndProc() DoModal = DialogBoxIndirectParam(Control.hInstance, temp As *DLGTEMPLATE, hwndParent, AddressOf(DefDlgProc), 0) End Function Protected Override Function DefWndProc(m As DWord, w As WPARAM, l As LPARAM) As LRESULT DefWndProc = FALSE End Function Private Static Function DefDlgProc(hDlg As HWND, msg As DWord, wp As WPARAM, lp As LPARAM) As LONG_PTR Dim lr = Control.WndProcFirst(hDlg, msg, wp, lp) If lr <> 0 Then Select Case msg Case WM_CHARTOITEM, _ WM_COMPAREITEM, _ WM_CTLCOLORBTN, _ WM_CTLCOLORDLG, _ WM_CTLCOLOREDIT, _ WM_CTLCOLORLISTBOX, _ WM_CTLCOLORSCROLLBAR, _ WM_CTLCOLORSTATIC, _ WM_INITDIALOG, _ WM_QUERYDRAGICON, _ WM_VKEYTOITEM DefDlgProc = lr Case Else SetWindowLongPtr(hDlg, DWLP_MSGRESULT, lr) End Select End If End Function End Class End Namespace End Namespace End Namespace