Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Внизсоздании окна, как диалог из ресурса Найти похожие ветки
← →
Dima_1st (2003-01-03 01:02) [0]Проблемка при создании окна, как диалог из ресурса, не верные размеры окна.
В RC файле имеем:
LANGUAGE LANG_RUSSIAN,0
MAIN_DIALOG DIALOG 0, 0, 100, 100
CLASS "Sample1WndClass"
CAPTION "Sample1"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_RUSSIAN , 0
{
}
Т.е. размер окна по идее должен быть 100x100.
Теперь создаем это окно :
var
hWnd : THandle;
MainWndClass : TWndClassEx;
...
FillChar(MainWndClass, SizeOf(TWndClassEx), 0);
With MainWndClass Do
Begin
cbSize := sizeof(MainWndClass);
style := cs_hredraw Or cs_vredraw;
lpfnWndProc := @MainWindowProc;
cbClsExtra := 0;
cbWndExtra := DLGWINDOWEXTRA;
hInstance := hInstance;
hIcon := 0;
hCursor := LoadCursor(0, idc_arrow);
hbrBackground := COLOR_BTNFACE + 1;
lpszMenuName := Nil;
lpszClassName := "Sample1WndClass";
End;
RegisterClassEx(MainWndClass);
hWnd := CreateDialog(hInstance, "MAIN_DIALOG", 0, Nil);
ShowWindow(hWnd, SW_SHOW);
...
Окно прекрасно появилось, но его размер НЕ 100x100 ! -
Размер клиенской области : 150x163, всего окна 156x188 !
Проверял GetWindowRect и GetClientRect.
Еще проще убедится в неверности размера нарисовав в окне прям-к размера 100x100. В чем ошибка ?
← →
Suntechnic (2003-01-03 03:00) [1]100x100 это не в пикселях, а в условных единицах т.н. dialog units. Это сделано для того, чтобы не привязывать размеры окна к конкретной контексту в котором это окно создается(адаптер, монитор и т.д.). Для того чтобы перевести из dialog units в пиксели используется ф-ция
MapDialogRect
.
← →
Dima_1st (2003-01-03 11:35) [2]Огромное спасибо, просто привык что все всегда в pix.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c