Code: Select all
var oSys = AkelPad.SystemFunction();
var hMainWnd = AkelPad.GetMainWnd();
var sClass = "Dialog box test";
var sTitle1 = "With DS_SETFONT";
var sTitle2 = "Without DS_SETFONT";
var nStyle1 = 0x90CA0040; //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|DS_SETFONT
var nStyle2 = 0x90CA0000; //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
var nFlags = 0x2; //CDF_PIXELS
var IDSTATIC = 1000;
var nW = 250;
var nH = 100;
AkelPad.WindowRegisterClass(sClass);
var hDlg1 = AkelPad.CreateDialog(0, sClass, sTitle1, nStyle1, 100, 100, nW, nH, hMainWnd, DialogCallback, nFlags, 0, 0, "", 0, 0, "|",
//ExSt, Class, Title, Style, X, Y, W, H, ID, lParam
0x0000, "STATIC", "", 0x50800000, 10, 10, nW-20, nH-20, IDSTATIC, 0);
var hDlg2 = AkelPad.CreateDialog(0, sClass, sTitle2, nStyle2, 360, 100, nW, nH, hMainWnd, DialogCallback, nFlags, 0, 0, "", 0, 0, "|",
//ExSt, Class, Title, Style, X, Y, W, H, ID, lParam,
0x0000, "STATIC", "", 0x50800000, 10, 10, nW-20, nH-20, IDSTATIC, 0);
AkelPad.WindowGetMessage();
AkelPad.WindowUnregisterClass(sClass);
function DialogCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 272 /*WM_INITDIALOG*/)
{
var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
oSys.Call("User32::GetClientRect", hWnd, lpRect);
var nW = AkelPad.MemRead(_PtrAdd(lpRect, 8), 3 /*DT_DWORD*/);
var nH = AkelPad.MemRead(_PtrAdd(lpRect, 12), 3 /*DT_DWORD*/);
AkelPad.MemFree(lpRect);
oSys.Call("User32::SetDlgItemTextW", hWnd, IDSTATIC, "In pixels\n\nWidth: " + nW + "\nHeight: " + nH);
}
else if (uMsg == 273) //WM_COMMAND
{
if ((wParam & 0xFFFF) == 2 /*IDCANCEL*/)
{
oSys.Call("user32::PostQuitMessage", 0);
oSys.Call("user32::DestroyWindow", hDlg1);
oSys.Call("user32::DestroyWindow", hDlg2);
}
}
return 0;
}