Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
ВнизВоспрос по переводу на WinAPI - подскажите, пожалуйста. Найти похожие ветки
← →
Andrey007 (2003-08-13 10:16) [0]Как перевести строку s:=Memo1.Lines[0] на WinAPI? Я вчера уже задавал этот вопрос, но модератор(ы?) почему-то стёрли эту тему. Поэтому напомню о чём шла речь.
Мне посоветовали несколько вариантов:
1) var s: array[0..4095] of Char;
begin
Word((@s)^) := SizeOf(s);
SendMessage(Memo1.Handle, EM_GETLINE, 0, Longint(@s));
...
end;
2) SetLength(S,SendMessage(Memo1.Handle,EM_LINELENGTH,
SendMessage(Memo1.Handle,EM_LINEINDEX,idx,0),0)+1);
SetLength(S,SendMessage(Memo1.Handle,EM_GETLINE,idx,LPARAM(S)));
3) GetWindowText(Memo1.Handle, Buf, SizeOf(Buf));
Все эти варианты давали Access Violation, поскольку вызывались в потоке. Делалось это так:
(VTAll - TMemo, RunThread - глобальная булевская переменная)
procedure AnalyzForm.VTAllMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
function ThreadFunc(p: Pointer): LongInt; stdcall;
begin
Result:=0; // idx:=0;
RunThread:=False;
// поток - здесь и надо перевести s:=VTAll.Lines[0] на WinAPI, чтобы не было Access Violation при обращении к VCL-объектам
RunThread:=True
end;
var hThread: THandle;
ThreadID: DWord;
begin
if RunThread then
begin
hthread:=CreateThread(nil,0,@ThreadFunc,nil,0,ThreadId);
if hthread = 0 then MessageBox(Handle, "No Thread", nil, MB_OK)
end
end;
← →
имя (2003-08-13 10:21) [1]Удалено модератором
Примечание: Offtopic
← →
Andrey007 (2003-08-13 10:26) [2]Удалено модератором
Примечание: Offtopic
← →
NAlexey (2003-08-13 10:30) [3]Удалено модератором
Примечание: Offtopic
← →
Крот (2003-08-13 11:26) [4]
> Andrey007 (13.08.03 10:16)
Мне кажется, стоит перенести ThreadProc вне твоей процедуры VTAllMouseMove. Не понятно, что происходит с процедурой ThreadProc, во время выхода из VTAllMouse. Кстати, если проект на VCL, что мешает использовать TThread?
← →
Игорь Шевченко (2003-08-13 13:12) [5]Нельзя делать процедуру потока локальной.
← →
Andrey007 (2003-08-14 10:30) [6]Спасибо! Всё получилось.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c