EDIT
От: SerrNovik www.serrnovik.narod.ru
Дата: 02.12.04 17:30
Оценка:
Заморочился я на ровном месте... Вообщем вопрос следующий... требуется чтобы было поле для ввода данных и чтоб их можно было обрабатывать... с api пррограмированием знаком недавно но нигде не могу найти описания работы с окошками такого вида кроме кнопок... буду очень благодарен если расшифруете значения при создании поля типа edit в CreateWindow() и скажите какими сообщениями или функциями отлавливань изменение значения в этом поле, чтоб потом кидать их в расчеты...
Спасибо..
Re: EDIT
От: Ed.ward Россия  
Дата: 02.12.04 17:42
Оценка:
Здравствуйте, SerrNovik, Вы писали:

SN>Заморочился я на ровном месте... Вообщем вопрос следующий... требуется чтобы было поле для ввода данных и чтоб их можно было обрабатывать... с api пррограмированием знаком недавно но нигде не могу найти описания работы с окошками такого вида кроме кнопок... буду очень благодарен если расшифруете значения при создании поля типа edit в CreateWindow() и скажите какими сообщениями или функциями отлавливань изменение значения в этом поле, чтоб потом кидать их в расчеты...

SN>Спасибо..

Сообщения начинающиеся на EM_

см http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrols.asp

Ed.ward
Re[2]: EDIT
От: SerrNovik www.serrnovik.narod.ru
Дата: 02.12.04 18:20
Оценка:
А можно всеже в только по данному конкретному случаю как в переменную запихнуть значение, которое пользователь ввел в окне, а то я тогда просто утону в mdsn...
Re[3]: EDIT
От: OpenGL  
Дата: 02.12.04 18:24
Оценка:
Здравствуйте, SerrNovik, Вы писали:

SN>А можно всеже в только по данному конкретному случаю как в переменную запихнуть значение, которое пользователь ввел в окне, а то я тогда просто утону в mdsn...


[msdn]EM_GETLINE
The EM_GETLINE message copies a line of text from an edit control and places it in a specified buffer. You can send this message to either an edit control or a rich edit control.

To send this message, call the SendMessage function with the following parameters.

SendMessage(
(HWND) hWnd, // handle to destination window
EM_GETLINE, // message to send
(WPARAM) wParam, // line number
(LPARAM) lParam // line buffer (LPCTSTR)
);
Parameters
wParam
Specifies the zero-based index of the line to retrieve from a multiline edit control. A value of zero specifies the topmost line. This parameter is ignored by a single-line edit control.
lParam
Pointer to the buffer that receives a copy of the line. Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer. For ANSI text, this is the number of bytes; for Unicode text, this is the numer of characters. The size in the first word is overwritten by the copied line.
Return Values
The return value is the number of TCHARs copied. The return value is zero if the line number specified by the wParam parameter is greater than the number of lines in the edit control.

Remarks
Edit controls: The copied line does not contain a terminating null character.

Rich edit controls: The copied line does not contain a terminating null character, unless no text was copied. If no text was copied, the message places a null character at the beginning of the buffer. For information about the compatibility of rich edit versions with the various system versions, see About Rich Edit Controls.

Requirements
Windows NT/2000 or later: Requires Windows NT 3.1 or later.
Windows 95/98/Me: Requires Windows 95 or later.
Version: Requires Rich Edit 1.0 or later.
Header: Declared in Winuser.h; include Windows.h.[/msdn]
Re[3]: EDIT
От: hermit. Россия  
Дата: 03.12.04 07:48
Оценка:
Здравствуйте, SerrNovik, Вы писали:

SN>А можно всеже в только по данному конкретному случаю как в переменную запихнуть значение, которое пользователь ввел в окне, а то я тогда просто утону в mdsn...


GetWindowText[Ex]
... << RSDN@Home 1.1.3 stable >>
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
Re[4]: EDIT
От: SerrNovik www.serrnovik.narod.ru
Дата: 06.12.04 22:52
Оценка:
SN>>А можно всеже в только по данному конкретному случаю как в переменную запихнуть значение, которое пользователь ввел в окне, а то я тогда просто утону в mdsn...

H>GetWindowText[Ex]


Попробовал использовать эту функцию, у нее прототип int GetWindowText(


HWND hWnd,
LPTSTR lpString,
int nMaxCount
);

Притом lpString
[out] Pointer to the buffer that will receive the text. If the string is as long or longer than the buffer, the string is truncated and terminated with a NULL character.

После ее отработки с пересенной, которая у меня LPTSTR или LPSTR ничего не происходит... ту твроде как какаето борода с тем что это указатель на буфер... А ЧТО ЕСТЬ ЭТОТ БУФЕР? и как из него брать текст???
Спасибо...
Re[5]: EDIT
От: _gc Россия  
Дата: 07.12.04 06:20
Оценка:
Здравствуйте, SerrNovik, Вы писали:

SN>После ее отработки с пересенной, которая у меня LPTSTR или LPSTR ничего не происходит... ту твроде как какаето борода с тем что это указатель на буфер... А ЧТО ЕСТЬ ЭТОТ БУФЕР? и как из него брать текст???

SN>Спасибо...

Ну смотри. Во-первых:
char buff[512];
GetWindowText(hWnd, buff, 512);

тогда у тебя в buff будет валяться строчка с текстом, заканчивающаяся нулём. Также не забудь, что GetWindowText — это всего лишь алиас на функции GetWindowTextA (ANSI) и GetWindowTextW (Widechar), то есть в первом случае у тебя каждый символ строчки занимает ровно байт, а во втором — два байта. Поэтому, если у тебя запускается GetWindowTextW и ты смотришь на строчку по адресу buff, то тебе выдаётся пустая строка, так как самый первый байт — 0 (первый символ состоих из двух байтов, и первый из них 0, если символ из ascii).
... << RSDN@Home 1.1.3 stable >>
Re[6]: EDIT
От: SerrNovik www.serrnovik.narod.ru
Дата: 07.12.04 09:15
Оценка:
Здравствуйте, _gc...

Здорово, теперь все заработало... спасибо...
Re[6]: EDIT
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 07.12.04 09:18
Оценка:
Здравствуйте, _gc, Вы писали:

_gc>Поэтому, если у тебя запускается GetWindowTextW и ты смотришь на строчку по адресу buff, то тебе выдаётся пустая строка, так как самый первый байт — 0 (первый символ состоих из двух байтов, и первый из них 0, если символ из ascii).


В настройках отладчика есть такая замечательная галочка — "Display unicode strings".
[ posted via RSDN@Home 1.1.4 beta 3 r241 ]
- Искренне ваш, Поросенок Пафнутий
Re[3]: EDIT
От: _Ramzes_ Россия  
Дата: 07.12.04 09:49
Оценка:
Здравствуйте, SerrNovik, Вы писали:

SN>А можно всеже в только по данному конкретному случаю как в переменную запихнуть значение, которое пользователь ввел в окне, а то я тогда просто утону в mdsn...


Чтобы прочитать текст из эдитки пишем GetWindowText( hwnd, buffer, len ); где hwnd — описатель эдитки, полученный при создании эдитки через CreateWindow(), buffer — указатель на строку символов (например объявленную так: char buffer[100]), сюда будет записан текст из эдитки, len — длина буфера, в данном случае 100.
Чтобы записать в эдитку текст используем SetWindowText( hwnd, buffer ); где hwnd — смотри выше, buffer — указатель на строку, которую мы хотим вывести.

ЗЫ Данные функции работают как для однострочных, так и для многострочных эдиток. Но работают сразу для всего текста. Так что, если необходимо считывать строки из многострочной эдитки нужен другой подход.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.