Как создать форму из ресурсов
Создаем прект File -> New -> Application. Удаляем из него форму и сохраняем в папку проекта. Открываем модуль проекта и начнем создавать программу.
Первым делом добавим используемые модули:
uses Windows,Messages,SysUtils;
Определим константы для нашей программы (имена кнопок, полей ввода, заголовок программы и т.д.).
const AppTitle: PChar = 'Form from Resources'; szCaption: PChar = 'Information'; szMessage: PChar = 'Была нажата кнопка ОК'; szEdit: PChar = 'Текст в поле ввода'; DIALOG = 100; IDC_EDIT = 1001; IDC_LABEL = 1002; IDC_OK = 1003; IDC_CLOSE = 1004;
ID элементов управления можно посмотреть в редакторе ресурсов. У меня DIALOG=100 (диалоговое окно), IDC_OK=1003 (кнопка ОК), IDC_CLOSE=1004 (кнопка Выход), IDC_LABEL=1002 (метка) и IDC_EDIT=1001 (поле ввода).
Далее определяем переменные экземпляра программы и иконки.
var Inst,hIcon:integer;
Пишем процедуру обработки окна:
function DlgProc(hWin,uMsg,wParam,lParam: integer): integer; stdcall; begin result:= 0; case uMsg of WM_INITDIALOG: // Инициализация диалогового окна begin hIcon:= LoadIcon(hInstance,'MAINICON'); // загружаем иконку из ресурсов SendMessage(hWin, WM_SETICON, ICON_BIG, hIcon); // назначаем ее нашему окну SetWindowText(hWin, AppTitle); // Выводим заголовок окна end; WM_COMMAND: begin if wParam = IDC_OK then begin // если нажата кнопка OK MessageBox(hWin, szMessage, szCaption, MB_OK+MB_ICONINFORMATION); SetDlgItemText(hWin,IDC_EDIT,szEdit); end else if wParam = IDC_CLOSE then // Если нажата кнопка выхода из программы EndDialog(hWin,0); end; WM_CLOSE: // При закрытии окна, щелкнув по крестику закрытия окна EndDialog(hWin,0); end; end;
Ну, и инициализация всей программы, собственно с этих строк программа и начнет свою работу.
begin {$R dialog.res} Inst:= hInstance; asm push 0 push offset DlgProc push 0 push DIALOG push Inst call DialogBoxParam end; end.
Первым делом мы подключили файл ресурсов директивой $R, затем назначаем переменной Inst хэндл нашего экземпляра приложения. Далее идет ассемблерная вставка, которой мы создаем диалоговое окно. DIALOG - указатель на нашу форму в ресурсах. DlgProc - цикл обработки сообщения, т.е. процедура обработки диалогового окна. Описание функции DialogBoxParam можно посмотреть в справке Delphi.
Здесь можно скачать исходный код программы.
Комментарии