AkelPad.CreateDialog (+ActiveX)
Создать диалог.
CreateDialog(nExStyle, pClassName, pTitle, nStyle, x, y, nWidth, nHeight, hWndParent, lParam[, nFlags][, hMenu][, hInstance][, pFaceName][, nFontStyle][, nPointSize], "|", nExStyle1, pClassName1, pTitle1, nStyle1, x1, y1, nWidth1, nHeight1, nId1[, lParam1], "|", nExStyle2, pClassName2, pTitle2, nStyle2, x2, y2, nWidth2, nHeight2, nId2[, lParam2], "|", [...])
Параметры
| nExStyle | Расширенный стиль диалога. См. описание CreateWindowEx в MSDN. |
| pClassName | Имя класса зарегистрированное с помощью AkelPad.WindowRegisterClass. |
| pTitle | Текст заголовка диалога. |
| nStyle | Стиль диалога. См. описание CreateWindowEx в MSDN. |
| x | Горизонтальная позиция диалога в экранных координатах. |
| y | Вертикальная позиция диалога в экранных координатах. |
| nWidth | Ширина диалога. |
| nHeight | Высота диалога. |
| hWndParent | Родительское окно создаваемого диалога. |
| lParam | Указатель на процедуру диалога. |
| nFlags | 0x1 //CDF_MODAL Создать модальный диалог. Если не указано, создаётся немодальный диалог, который требует наличия AkelPad.WindowGetMessage. 0x2 //CDF_PIXELS Координаты указываются в пикселях для 96 DPI. Если не указано, координаты // указываются в единицах диалогового окна, которые зависят от размеров шрифта диалога. //По умолчанию 0x0. |
| hMenu | Определяет порядковое значение ресурса меню в исполняемом файле или строку, которая определяет название ресурса меню в исполняемом файле. Если ноль, не используется (по умолчанию). |
| hInstance | Дескриптор модуля, который будет связан с окном. Если ноль, будет использован дескриптор AkelPad.GetInstanceDll (по умолчанию). |
| pFaceName | Имя шрифта, например, "Courier". Если "", используется системный шрифт для диалогов (по умолчанию). Обрабатывается только, когда nStyle имеет флаг 0x40 /*DS_SETFONT*/. |
| nFontStyle | 0 игнорировать (по умолчанию). 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. Обрабатывается только, когда nStyle имеет флаг 0x40 /*DS_SETFONT*/. |
| nPointSize | Размер шрифта. Не изменяется, если 0 (по умолчанию). Обрабатывается только, когда nStyle имеет флаг 0x40 /*DS_SETFONT*/. |
| "|" | Свидетельствует об окончании передачи параметров диалога и начале передачи параметров элементов управления. |
| nExStyle1 | Расширенный стиль окна. См. описание CreateWindowEx в MSDN. |
| pClassName1 | Имя класса, например, "BUTTON". См. описание CreateWindowEx в MSDN. |
| pTitle1 | Текст элемента управления. |
| nStyle1 | Стиль окна. См. описание CreateWindowEx в MSDN. |
| x1 | Горизонтальная позиция окна в клиентских координатах (относительно родительского окна). |
| y1 | Вертикальная позиция окна в клиентских координатах (относительно родительского окна). |
| nWidth1 | Ширина окна. |
| nHeight1 | Высота окна. |
| nId1 | Идентификатор элемента управления. |
| lParam1 | Данные для создания окна. Первый WORD указывает размер данных, в байтах, для создания (включая WORD размера). Элемент управления получит эти данные в параметре lParam сообщения WM_CREATE. Если ноль, не используется (по умолчанию). |
| "|" | Свидетельствует об окончании передачи параметров элемента управления. |
| ... | Параметры следующего элемента управления. |
Возвращаемое значение
Если nFlags не содержит флаг CDF_MODAL, то возвращается дескриптор диалога.
Если nFlags содержит флаг CDF_MODAL, то возвращается значение переданное в "user32::EndDialog".
Пример

var hMainWnd = AkelPad.GetMainWnd();
var oSys = AkelPad.SystemFunction();
var hWndDialog = 0;
var wCommand;
var dwFlags = 0x2 /*CDF_PIXELS*/ ;
//Control IDs
var IDC_BUTTON1 = 1001;
var IDC_BUTTON2 = 1002;
var IDC_EDIT = 1003;
if (AkelPad.WindowRegisterClass("My Class")) {
AkelPad.CreateDialog(0, "My Class", "My Title", 0x90ca0040 /*DS_SETFONT|WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX*/ , 10, 10, 300, 200, hMainWnd, DialogCallback, dwFlags, "|",
0, "BUTTON", "Button text 1", 0x50010001 /*WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_DEFPUSHBUTTON*/ , 10, 10, 200, 20, IDC_BUTTON1, "|",
0, "BUTTON", "Button text 2", 0x50010000 /*WS_VISIBLE|WS_CHILD|WS_TABSTOP*/ , 10, 50, 200, 20, IDC_BUTTON2, "|",
0, "EDIT", "Edit text 3", 0x50010000 /*WS_VISIBLE|WS_CHILD|WS_TABSTOP*/ , 10, 90, 200, 20, IDC_EDIT);
if (hWndDialog && !(dwFlags & 0x1 /*CDF_MODAL*/ )) {
AkelPad.ScriptNoMutex();
AkelPad.WindowGetMessage(0x4 /*WGM_KEYDOWNUP*/ );
}
AkelPad.WindowUnregisterClass("My Class");
}
function DialogCallback(hWnd, uMsg, wParam, lParam) {
if (uMsg == 0x110 /*WM_INITDIALOG*/ ) {
hWndDialog = hWnd;
} else if (uMsg == 273 /*WM_COMMAND*/ ) {
wCommand = LOWORD(wParam);
if (wCommand == IDC_BUTTON1 ||
wCommand == IDC_BUTTON2) {
AkelPad.MessageBox(hWnd, "Button=" + wCommand, WScript.ScriptName, 0 /*MB_OK*/ );
} else if (wCommand == 2 /*IDCANCEL*/ ) {
//Destroy dialog
if (!(dwFlags & 0x1 /*CDF_MODAL*/ )) {
//Exit message loop
oSys.Call("user32::PostQuitMessage", 0);
oSys.Call("user32::DestroyWindow", hWnd);
} else oSys.Call("user32::EndDialog", hWnd, 0);
}
}
return 0;
}
function LOWORD(dwNumber) {
return (dwNumber & 0xffff);
}