📄 mdllsdlg.pas
字号:
unit MdllsDlg;
interface
uses Windows;
// modalless对话框过程
function MdllsDlg_DlgProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
implementation
uses Messages, Modalles;
// modalless对话框WM_INITDIALOG消息处理
function MdllsDlg_OnInitDialog(hWnd, hWndFocus: HWND; lParam: LPARAM): BOOL;
begin
Result := TRUE; // 允许Windows设置焦点给hWndFocus
end;
// modalless对话框WM_COMMAND消息处理
procedure MdllsDlg_OnCommand(hWnd: HWND; id: Integer; hWndCtl: HWND; codeNotify: UINT);
begin
case (id) of
IDOK, IDCANCEL: // 隐藏对话框, 并结束Modalless_ShowDlg()的消息循环
Modalless_EndDlg(hWnd, id);
end;
end;
// modalless对话框WM_SHOWWINDOW消息处理
procedure MdllsDlg_OnShowWindow(hWnd: HWND; fShow: BOOL; Status: UINT);
begin
if (fShow) then // 设第一个含WS_TABSTOP风格的控件有焦点
SetFocus(GetNextDlgTabItem(hWnd, 0, FALSE));
end;
// modalless对话框过程
function MdllsDlg_DlgProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
begin
Result := FALSE; // 返回FALSE则表示消息未处理, 则DefDlgProc()会作默认处理
case (uMsg) of
WM_INITDIALOG:
Result := BOOL(SetWindowLong(hWnd, DWL_MSGRESULT,
Longint(MdllsDlg_OnInitDialog(hWnd, wParam, lParam))));
WM_COMMAND:
MdllsDlg_OnCommand(hWnd, LOWORD(wParam), lParam, HIWORD(wParam));
WM_SHOWWINDOW:
MdllsDlg_OnShowWindow(hWnd, BOOL(wParam), lParam);
end;
// 注意: 通常, 如果对话框过程处理了消息, 应该返回TRUE, 则DefDlgProc()不再作处理,
// 不过对于WM_SHOWWINDOW, 我们需要DefDlgProc()作一些默认处理, 所以此处返回FALSE
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -