Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

Надо поймать клик   Найти похожие ветки 

 
xZero ©   (2003-01-28 01:11) [0]

Есть окно hWnd:=CreateWindow(ClassName,"My",WS_OVERLAPPEDWINDOW,100,100,750,600,0,0,hInstance,nil);
есть едит
hEdit:=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","",WS_CHILD or WS_VISIBLE or ES_MULTILINE or ES_AUTOHSCROLL or ES_AUTOVSCROLL or WS_HSCROLL or WS_VSCROLL,3,18,500,350,hWnd,0,hInstance,nil);
как отследить клик то едиту?
Желательно на Делфи!


 
Nick_N_A ©   (2003-01-28 05:27) [1]

Для создания окна, сначало нужно зареестрировать его класс,
там как раз нужно указать адрес WndProc,
(не беда, можно задать позже SetClassLong GCL_WndProc)
именно туда тебе будут приходить все сообщеня.
Не забывай цепочку GetMessage-TranslateMessage-DispatchMessage


 
xZero ©   (2003-01-28 12:12) [2]

Вот поглядите кусок кода...

var OldWndProc:pointer;
....
Function WinProc(hWnd:THandle; Msg,wParam,lParam:Longint):Longint; stdcall; export;
begin
case Msg of
..........
Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
end;

Function WProc(hWnd:THandle; Msg,wParam,lParam:Longint):Longint; stdcall; export;
begin
case msg of
WM_LBUTTONDOWN:
begin
sendmessage(hwnd,wm_settext,0,integer(pchar("asd")));
// но производя тут sendmessage сообщение идет не гл. окну (hWnd), а почему то едиту (hEdit)
end;
end;
Result:=CallWindowProc(OldWndProc,hWnd,Msg,wParam,lParam);
end;

//тут идет заполнение структуры для создания окна
//такде регистрауия, короче все что надо для создания окна, а далее...это

OldWndProc:=pointer(GetWindowLong(hEdit, GWL_WNDPROC));
SetWindowLong(hEdit,GWL_WNDPROC,integer(@wproc));

//тут еще что-то...
//и конечное же циклобработки

while GetMessage(Msg,hWnd,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.


Что тут неверно, я про запарку с sendmessage (а то вдруг и другое не будет работать!)
Поглядите плиз все ли тут правильно!?


 
xZero ©   (2003-01-28 12:53) [3]

И в конце концов мне надо выделить строку отловлнную после wm_lbuttondown, можно другим цветом, как это организовать?


 
i-C3H7OH   (2003-01-28 13:30) [4]

переменная hWnd в ф-ции WProc локальная (первый параметр) , а не глобальная, где, как я понял, и хранится дескриптор главного окна

попробуй назвать ее по-другому

а что за строка? просто на форме?


 
xZero ©   (2003-01-28 14:22) [5]

Нет надо выделить строку в едите по которой произошел клик!


 
i-C3H7OH   (2003-01-28 14:47) [6]

а их там много? как цвет текста в Едите задается? мож SetTextColor(hdc, Color)? нет, неправильно. не знаю


 
xZero ©   (2003-01-28 14:53) [7]

Ну строка как минимум не одна(произвольно), а про цвет я и хочу узнать, вроде SetTextColor подходит(по смыслу), но вот примерчика нету?


 
i-C3H7OH   (2003-01-28 15:21) [8]

примерчик мне в голову приходит такой:

hEdit := CreateWindow(..);
dc := GetDC(hEdit);

При клике
SetTextColor(dc, Color);

ну и перед закрытием
ReleaseDC(hEdit, dc);


но это неправильно, т.к. цвет текста задаем конкретно для контекста dc, а не для едита.

поройся в исходниках ТЕдита



Страницы: 1 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
7-76681
*User*
2003-01-28 12:47
2003.03.24
Модем


3-76341
SZap
2003-03-05 16:42
2003.03.24
Вопрос по TQuery


14-76652
Viacheslav
2003-03-08 09:26
2003.03.24
Обезвредить клавиатурного паука!


8-76517
Fostr
2002-12-12 01:47
2003.03.24
Поворот картинок


1-76374
kus
2003-03-11 15:43
2003.03.24
Как добавить в ListBox Строчки разного цвета