Посл.ответ |
Сообщение |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 25 июля 2007 01:34 · Личное сообщение · #1
вообщем проблема такая:
создаю STATIC, ect через CreateWindowEx
котторый выглядит как GroupBox, и потом
пытаюсь послать по handle полученной компаненты
WM_SETFONT, с созданным заранее шрифтом через CreateFont
Но при запуске получается что программа иногда корректно всё прорисовывает
а иногда запинается на первом компаненте которому я посылаю это сообщение,
и как мне обойти это ГГГГ.
Самое обидное что программа уже дописанан только эта радость не даёт спокойно жить
| Сообщение посчитали полезным: |
|
Ранг: 104.9 (ветеран), 47thx Активность: 0.04↘0.02 Статус: Участник
|
Создано: 25 июля 2007 10:13 · Личное сообщение · #2
ты лучше код покажи как ты реализуешь
создаю STATIC, ect через CreateWindowEx
котторый выглядит как GroupBox, и потом
пытаюсь послать по handle полученной компаненты
WM_SETFONT, с созданным заранее шрифтом через CreateFont
| Сообщение посчитали полезным: |
Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 25 июля 2007 10:26 · Личное сообщение · #3
SelectObject
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 25 июля 2007 11:36 · Личное сообщение · #4
через RegisterClassEx создаю окно
через CreateWindowEx компаненты
var info:hwnd
info:=CreateWindowEx
(0,'BUTTON',info',
WS_CHILD or BS_GROUPBOX,
2,1,341,99,MainWnd,86,
Hinstance,nil
);ShowWindow(info,CmdShow);
sendmessage(info,WM_SETFONT,font,1);
вот так
| Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 25 июля 2007 11:39 · Личное сообщение · #5
Ice-T, что за SelectObject,
как я понял это тоже процедура установки
фонта, только hwnd это hdc
font-hglob..., да?
| Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 25 июля 2007 13:02 · Личное сообщение · #6
| Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 25 июля 2007 23:18 · Личное сообщение · #7
народ посоветуйте ещё что-нибудь пожалуйста
| Сообщение посчитали полезным: |
Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
|
Создано: 26 июля 2007 00:37 · Поправил: v0id2k · Личное сообщение · #8
Как я понял переменная info это кнопка.
Делай так:
var
info: Integer;
font: Integer;
...
begin
...
// создаем кнопку
info := CreateWindow('Button', 'info', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT or BS_FLAT, 2, 1, 341, 99, MainWnd, 86, Hinstance, nil);
...
// создаем шрифт
font := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, LIP_DEFAULT_PRECIS, EFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');
...
// теперь присваиваем шрифт всему тому, что насоздовале
if font <> 0 then
begin
...
SendMessage(info, WM_SETFONT, font, 0);
...
end;
Что не понятно, пиши.
----- xchg dword [eax], eax | Сообщение посчитали полезным: |
Ранг: 120.9 (ветеран), 5thx Активность: 0.08↘0 Статус: Участник Programmer and reverser
|
Создано: 26 июля 2007 00:38 · Поправил: Executioner · Личное сообщение · #9
Это должно выглядеть примерно так:
hFont:=CreateFontIndirect(pFont);
hDc:=GetDc(info);
ret:=SelectObject(hDc,hFont);
ret:=ReleaseDC(info,hDc);
----- Уважайте других и пишите грамотно. | Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 03 августа 2007 16:30 · Личное сообщение · #10
щас попробую о результатах обязательно отпишу
| Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 05 августа 2007 07:52 · Личное сообщение · #11
v0id2k, у меня вообще-то всё так
и было сделано, только что через
CreateWindowEx.
Executioner, попробовал как ты
посоветовал. но в результате получилось
как будто я вообще ни Sendmessage не использовал,
ни твоим предложением
| Сообщение посчитали полезным: |
Ранг: 120.9 (ветеран), 5thx Активность: 0.08↘0 Статус: Участник Programmer and reverser
|
Создано: 05 августа 2007 14:57 · Личное сообщение · #12
Почему у меня работает, а у тебя - нет?
Попробуй CreateCompatibleDC сделать и закрыть хэндл старого контекста.
P.S.
Не стоит ли у тебя какой-нить Brico Pack или что-то в этом духе? А то у меня была подобная проблема. Грохнул упаковку, поставил нормальный скин, и все заработало.
----- Уважайте других и пишите грамотно. | Сообщение посчитали полезным: |
Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 05 августа 2007 15:36 · Личное сообщение · #13
NicknamES к слову т.с... когда что-то не получаецца, надо пробовать на пустом приложении тоже самое ;) если в нем вдруг получиццо, то... что тогда? =)
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
|
Создано: 05 августа 2007 17:30 · Личное сообщение · #14
NicknamES
Если ты все пишешь так как у меня в примере, то у тебя никакой запарки не должно быть.
ЗЫ: приаттачь полную процедуру создания окна и компонентов на нем(кнопки, лэйбля, etc)
----- xchg dword [eax], eax | Сообщение посчитали полезным: |
Ранг: 251.8 (наставник), 17thx Активность: 0.12↘0 Статус: Участник Seeker
|
Создано: 05 августа 2007 18:18 · Личное сообщение · #15
v0id2k
Там ошибки в параметрах, поправь
----- DREAMS CALL US | Сообщение посчитали полезным: |
Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
|
Создано: 05 августа 2007 18:27 · Личное сообщение · #16
=TS=
Блин, точно ведь ошибка была, щас поправил.
----- xchg dword [eax], eax | Сообщение посчитали полезным: |
Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 10 августа 2007 01:12 · Личное сообщение · #17
вообщем я проблему решил посмотрев функцию SetFont в
Api Component Library.
там было так:
font:=CreateFontIndirect(fstruct);
...
sendmessage(info,WM_SETFONT,Wparam(font),MAKELPARAM(Word(TRUE),0));
в конце концов проблема решена.
большое всем спасибо!!!
| Сообщение посчитали полезным: |