Главная страница
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
1-76471
Chlavik
2003-03-12 02:12
2003.03.24
Sleep Mode и прога


3-76271
Unicorn
2003-03-06 10:45
2003.03.24
SQl-запрос на копирование


14-76636
ZORRO
2003-03-07 20:49
2003.03.24
8-е марта


1-76457
merlot
2003-03-12 10:45
2003.03.24
Шифрование данных


14-76605
Паша
2003-03-07 12:41
2003.03.24
Загадка