![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создании окна, как диалог из ресурса [D6, Win95/98, Win2k]
Dima_1st © (2003-01-03 01:02:00)Проблемка при создании окна, как диалог из ресурса, не верные размеры окна.
В 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. В чем ошибка ?
Dima_1st (2003-01-03 11:35:00) [1]Огромное спасибо, просто привык что все всегда в pix.
Suntechnic (2003-01-03 03:00:00) [2]100x100 это не в пикселях, а в условных единицах т.н. dialog units. Это сделано для того, чтобы не привязывать размеры окна к конкретной контексту в котором это окно создается(адаптер, монитор и т.д.). Для того чтобы перевести из dialog units в пиксели используется ф-ция
MapDialogRect.