Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-41340
Agent[007]
2003-10-30 20:35
2003.11.13
TDBComboBox


14-41999
Viktor Kushnir
2003-10-15 18:51
2003.11.13
Нужна проффесиональная помощь.


1-41139
karan
2003-10-31 11:51
2003.11.13
ActiveX


1-41579
McSimm2
2003-11-04 11:08
2003.11.13
Как нарисовать иконку в MenuItem


14-41913
Омлет
2003-10-19 15:40
2003.11.13
Именинники 19 октября!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский