⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgmdlls.dpr

📁 这一系列是我平时收集的pascal深入核心变成
💻 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 + -