Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
3-76320
Lans
2003-03-05 10:34
2003.03.24
Срочно!!! Какая функция в TTable показывает, что ячейка выделена!


7-76697
maxfiles
2003-01-28 00:35
2003.03.24
Перенаправление звука на звуковые платы.


14-76643
Asteroid
2003-03-07 17:36
2003.03.24
Тосты


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


3-76281
roadrunner
2003-03-04 11:20
2003.03.24
В чем ошибка...Вроде бы все делаю правильно...Access и пароль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский