Форум: "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