📄 dlgmdlls.dpr
字号:
program DlgMdlls;
{$R DlgMdlls.res}
uses Windows, Messages, MdllsDlg in 'MdllsDlg.pas', Modalles in 'Modalles.pas';
const
IDD_DLGMDLS = 101; // 主窗体对话框模板ID
IDI_DLGMDLS = 102; // 主窗体对话框图标ID
IDD_DLGMDLSDLG = 113; // modalless对话框模板ID
IDC_NAME = 1000; // Static & Edit 控件ID
IDC_CHANGEINFO = 1001; // 'Change ..' 按钮ID
// 主窗体对话框WM_INITDIALOG消息处理
function DlgMdlls_OnInitDialog(hWnd, hWndFocus: HWND; lParam: LPARAM): BOOL;
var
hWndMdllsDlg: LongWord; // HWND
begin
// 建立modalless对话框
hWndMdllsDlg :=
Modalless_CreateDlgA(MakeIntResource(IDD_DLGMDLSDLG), hWnd, @MdllsDlg_DlgProc, 0);
// 保存modalless对话框句柄
SetWindowLong(hWnd, GWL_USERDATA, hWndMdllsDlg);
// 设置主窗体对话框图标
SendMessage(hWnd, WM_SETICON, ICON_BIG, LoadIcon(HInstance, MakeIntResource(IDI_DLGMDLS)));
// 允许Windows设置焦点给hWndFocus
Result := TRUE;
end;
// 主窗体对话框WM_COMMAND消息处理
procedure DlgMdlls_OnCommand(hWnd: HWND; id: Integer; hWndCtl: HWND; codeNotify: UINT);
var
hWndMdllsDlg: LongWord; // HWND
szBuf: array[0..100] of Char;
begin
case (id) of
IDCANCEL:
begin
// 删除 modalless 对话框
Modalless_DestroyDlg(GetWindowLong(hWnd, GWL_USERDATA));
// 删除自身(主窗体对话框)
EndDialog(hWnd, id);
end;
IDC_CHANGEINFO:
begin
// 从额外空间取出modalless对话框句柄
hWndMdllsDlg := GetWindowLong(hWnd, GWL_USERDATA);
// 初始化modalless对话框Edit内容为自身Static文字
GetDlgItemText(hWnd, IDC_NAME, szBuf, SizeOf(szBuf));
SetDlgItemText(hWndMdllsDlg, IDC_NAME, szBuf);
// 显示modalless对话框,且用户选择'OK'
if (Modalless_ShowDlg(hWndMdllsDlg) = IDOK) then
begin
// 将自身Static文字设成modalless对话框Edit内容
GetDlgItemText(hWndMdllsDlg, IDC_NAME, szBuf, SizeOf(szBuf));
SetDlgItemText(hWnd, IDC_NAME, szBuf);
end;
end;
end;
end;
// 主窗体对话框过程
function DlgMdlls_DlgProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
begin
case (uMsg) of
WM_INITDIALOG:
begin
Result := BOOL(SetWindowLong(hWnd, DWL_MSGRESULT,
Longint(DlgMdlls_OnInitDialog(hWnd, wParam, lParam))));
end;
WM_COMMAND:
begin
DlgMdlls_OnCommand(hWnd, LOWORD(wParam), lParam, HIWORD(wParam));
Result := TRUE;
end;
else Result := FALSE;
end;
end;
// 程序'主线程'入口
begin
DialogBox(HInstance, MakeIntResource(IDD_DLGMDLS), 0, @DlgMdlls_DlgProc);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -