Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизPanel на Win API Найти похожие ветки
← →
XProger © (2004-09-25 18:45) [0]Приветствую...
Подскажите пожалуйста, как создать Panel на Win API?
И можно ли ей задать ровнение на низ родительского окна?
← →
DVM © (2004-09-25 18:56) [1]
> Подскажите пожалуйста, как создать Panel на Win API?
Именно панели на WinApi не создать. Аналог панели в WinApi - обычное дочернее окно.
> И можно ли ей задать ровнение на низ родительского окна?
можно, ручками.
← →
XProger © (2004-09-25 19:17) [2]Спасибо...
← →
XProger © (2004-09-25 22:42) [3]Сделал, но как можно избавиться от мерцания при изменении размеров родительского окна?
И ещё вопросы:
- Почему при перемещении дочернего окна, оно иногда не перерисовывает некоторые части?
- Я создал дочернее окно с Edit"ом без readonly параметра, и не могу печатать в нём! Там даже каретка не появляется... :(
← →
Apl (2004-09-26 05:46) [4]код покажи
← →
XProger © (2004-09-26 14:37) [5]
procedure TChannelWnd.Create(const Name: string);
begin
Handle := CreateWindowEx(WS_EX_LEFT or WS_EX_TOOLWINDOW,
"Channel_WndClass",
PChar(Name),
WS_OVERLAPPEDWINDOW or
WS_VISIBLE or WS_CHILD,
0, 0, 320, 240,
Chat_Handle,
0,
hInstance,
nil);
// Chat Memo
Memo := CreateWindow("EDIT",
"sssssssssss",
//ES_READONLY or
ES_LEFT or
ES_MULTILINE or
ES_AUTOVSCROLL or
WS_VISIBLE or
WS_CHILD or
WS_DLGFRAME or
WS_VSCROLL,
0, 0, 312, 191,
Handle, 1, hInstance, nil);
// Say Edit
Edit := CreateWindow("EDIT",
"aaa",
ES_LEFT or
ES_AUTOHSCROLL or
WS_VISIBLE or
WS_CHILD or
WS_DLGFRAME,
0, 191, 312, 25,
Handle, 2, hInstance, nil);
ShowWindow(Handle, SW_SHOW);
end;
Если создать 2 таких окна, они начнут друг-друга "пачкать". Может нужно выставлять нечто наподобии Z уровня?
← →
XProger © (2004-09-26 14:38) [6]Ой, забыл...
// Channel class
with Channel_WndClass do
begin
cbSize := SizeOf(Channel_WndClass);
style := CS_HREDRAW or CS_VREDRAW or CS_OWNDC;
lpfnWndProc := @Channel_WndProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := hInstance;
hIcon := LoadIcon(hInstance, "MAINICON");
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := COLOR_BTNFACE + 1;
lpszMenuName := nil;
lpszClassName := "Channel_WndClass";
end;
RegisterClassEx(Channel_WndClass);
← →
DVM © (2004-09-26 17:39) [7]
> XProger © (26.09.04 14:38) [6]
> or CS_OWNDC;
а это зачем?
← →
XProger © (2004-09-26 22:15) [8]Дык и без него та же ерунда...
Вот сама программа:
http://XProger.narod.ru/tmp/XChat.rar (8 кб)
Подвигай окошки, и заметишь, как предыдущее активное окно перестаёт перерисовываться...
← →
XProger © (2004-09-26 22:21) [9]Исходник: http://XProger.narod.ru/tmp/XChat_src.rar (3 кб)
← →
DVM © (2004-09-27 11:27) [10]Посмотри внимательно на поведение окон. Они не только друг друга пачкают. Они также пачкаются при перемещении их в низ родительского окна за его границу.
Если закрыть одно из окон, такого не происходит.
Вывод - проблема в двух одинаковых окнах.
Мне кажется нельзя просто так создавать окна указывая один и тот же класс и одну и ту же оконную процедуру.
← →
XProger © (2004-09-27 19:50) [11]Я пытался указывать процедуру находящуюся в классе. Но выдавалась ошибка при компиляции. При этом я создавал 2 одинаковых класса окон, что ИМХО не логично...
Можно ли после создания окна сменить его WinProc?
← →
jack128 © (2004-09-27 21:37) [12]
> Я пытался указывать процедуру находящуюся в классе. Но
> выдавалась ошибка при компиляции.
такая процедура называется "метод". копай в сторону MakeObjectInstance
> Можно ли после создания окна сменить его WinProc?
можно. SetWindowLong + F1
← →
KSergey © (2004-09-28 08:19) [13]> [10] DVM © (27.09.04 11:27)
> Мне кажется нельзя просто так создавать окна указывая один
> и тот же класс и одну и ту же оконную процедуру.
Не надо обманывать. Все можно.
← →
KSergey © (2004-09-28 08:41) [14]Посмотрел - но ошибку не вижу.. Чета странное в проге творится... Наверное книжки надо вам еще читать дальше ;)
← →
XProger © (2004-09-28 18:51) [15]KSergey, дык, специально для "умных" я и дал ссылку на src...
На словах я тоже много чего знаю... ;)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c