AkelPad.WindowRegisterDialog (+ActiveX)

Зарегистрировать диалог для обработки в цикле сообщений. Используется в случае, если диалог создан без WindowRegisterClass.

WindowRegisterDialog(hWnd)

Параметры

hWndДескриптор диалога.

Возвращаемое значение


true   успешно.
false  диалог уже зарегистрирован.

Пример

var hMainWnd = AkelPad.GetMainWnd();
var oSys = AkelPad.SystemFunction();
var hInstanceDLL = AkelPad.GetInstanceDll();
var hGuiFont = oSys.Call("gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/ );
var hWndModeless;
var hWndTestButton;
var IDC_TEST_BUTTON = 10001;

//Open "Find" dialog
if (hWndModeless = AkelPad.SendMessage(hMainWnd, 1275 /*AKD_GETMODELESS*/ , 0, 0))
    AkelPad.SendMessage(hWndModeless, 273 /*WM_COMMAND*/ , 2 /*IDCANCEL*/ , 0);
AkelPad.Command(4158 /*IDM_EDIT_FIND*/ );
hWndModeless = AkelPad.SendMessage(hMainWnd, 1275 /*AKD_GETMODELESS*/ , 0, 0);

//Create test button
hWndTestButton = oSys.Call("user32::CreateWindowEx" + _TCHAR,
    0, //dwExStyle
    "BUTTON", //lpClassName
    0, //lpWindowName
    0x50010000, //WS_VISIBLE|WS_CHILD|WS_TABSTOP
    294, //x
    80, //y
    81, //nWidth
    23, //nHeight
hWndModeless, //hWndParent
IDC_TEST_BUTTON, //ID
hInstanceDLL, //hInstance
    0); //lpParam
//Set font and text
SetWindowFontAndText(hWndTestButton, hGuiFont, "Test");

//Subclass dialog
if (AkelPad.WindowSubClass(hWndModeless, DialogCallback, 273 /*WM_COMMAND*/ , 2 /*WM_DESTROY*/ )) {
    //Register dialog for message loop
    AkelPad.WindowRegisterDialog(hWndModeless);

    //Message loop
    AkelPad.WindowGetMessage();

    //Unregister and unsubclass
    AkelPad.WindowUnregisterDialog(hWndModeless);
    AkelPad.WindowUnsubClass(hWndModeless);
}

function DialogCallback(hWnd, uMsg, wParam, lParam) {
    if (uMsg == 273) //WM_COMMAND
    {
        if (LOWORD(wParam) == IDC_TEST_BUTTON) {
            oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, "Test " + oSys.Call("kernel32::GetTickCount"));
        }
    } else if (uMsg == 2) //WM_DESTROY
    {
        //Exit message loop
        oSys.Call("user32::PostQuitMessage", 0);
    }
    return 0;
}

function SetWindowFontAndText(hWnd, hFont, pText) {
    AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/ , hFont, 1);
    oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, pText);
}

function LOWORD(dwNumber) {
    return (dwNumber & 0xffff);
}