Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Внизробота с диалогами Найти похожие ветки
← →
Igit (2003-09-06 13:29) [0]Не могу прочесть из диалога, делаю так:
var tmp:string;
begin
SetDlgItemText(Win, 100, @tmp );
какой есть хороший редактор диалогов, а то в блокноте запирился подгонять высоту, ширину... ?
как создать memo?
Спасибо.
← →
Suntechnic (2003-09-07 05:54) [1]какой есть хороший редактор диалогов, а то в блокноте запирился подгонять высоту, ширину... ?
В Visual C++ есть прекрасный редактор ресурсов.
как создать memo?
Memo это то же edit, только созданный со стилем ES_MULTILINE.
← →
Songoku (2003-09-07 18:36) [2]Ты делаешь совершенно не правельно!!!
Ты в думайся что ты пишшь!!!
Set - озночает устоновить
Get - озночает взять
Правильно это делается вот так:
var tmp:Array [0..256] of char;
begin
GetDlgItemText(Win, 100, tmp,256 );
Ещё лутше всего если ты будешь выделять память тоесть.
если я не ошибюсь так как проверить не магу
var
size:DWORD;
tmp:Pchar;
begin
//Ты вызываешь
size:=GetDlgItemText(Win, 100, nil,0); //что бы узнать длинну строки
//потом
tmp:=VirtualAlloc(0,size+1,MEM_COMMIT,PAGE_READWRITE); // Выделяешь память для текста.
GetDlgItemText(Win, 100, tmp,size); // Берём текст
.....
// Тра ля ля .. что нибудь с текстом происходит
.....
// И самое главное отчистить память что бы её не засорять!!!
VirtualFree(tmp,size+1,MEM_DECOMMIT);
← →
Morfein (2003-09-08 17:57) [3]VirtualAlloc для такой задачи не есть хорошо.. он создаёт фрагментацию памяти из-за выравнивания на 64К. границу.. Так что лучше фиксированый буфер в стеке использовать.. Тем более что автор же должен знать, что пишут в поле и какой макс. длинны это будет.
← →
Igit (2003-09-11 18:03) [4]Спасибо. Я сделал так:
Function GetDlgText(hDlg: HWND; nIDDlgItem: Integer) : string;
var
p : PChar;
length : integer;
begin
length := SendDlgItemMessage(hDlg, nIDDlgItem, wm_gettextlength, 0, 0);
if length <> 0 then begin
GetMem(p, length+1);
SendDlgItemMessage(hDlg, nIDDlgItem, wm_gettext, length+1, Integer(p));
Result:=p;
FreeMem(p, length+1);
end;
end;
Procedure AddDlgString(hDlg: HWND; nIDDlgItem: Integer; s:string);
begin
SetDlgItemText(hDlg, nIDDlgItem, PChar(GetDlgText(win,100)+#10#13+s));
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.033 c