Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | | | | | |
[C++] хотя вообще-то, надо конечно второе про UINT 03.04.03 21:44 Число просмотров: 1061
Автор: iokana <iokana jon> Статус: Member
|
пжалуста
|
<programming>
|
[C++] преобразование типов из UINT в CString ?? 24.03.03 21:56
Автор: iokana <iokana jon> Статус: Member
|
в Visual studio 6 проблем не было, а в .net стало юолее строже, так вот как преобразовать???
обычные конструкции типа (CString)переменная не проходят
|
|
[C++] преобразование типов из UINT в CString ?? 25.03.03 21:55
Автор: Tamas Статус: Member
|
> в Visual studio 6 проблем не было, а в .net стало юолее > строже, так вот как преобразовать??? > обычные конструкции типа (CString)переменная не проходят
а что ты подрузумеваеш под преобразованием unsigned int 16 битного чесла
в CString(это посути дела указатель на массив unsigned char)???
|
|
[C++] Насколько я знаю, в CString по-прежнему есть метод Format 24.03.03 22:05
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
|
| |
[C++] Насколько я знаю, в CString по-прежнему есть метод Format 25.03.03 16:48
Автор: iokana <iokana jon> Статус: Member
|
да, но это же работа с CString, а надо чтобы с UINT
|
| |
[C++] Насколько я знаю, в CString по-прежнему есть метод Format 25.03.03 16:29
Автор: iokana <iokana jon> Статус: Member
|
да, но ведь это же в CString, и работа с CString, а нужно работа с UINT
|
| | |
[C++] Не понял вопроса 25.03.03 16:57
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
Короче, вот это:
UINT a;
// ...
CString s;
s.Format("%u", a);
// Use s according to your needs
подходит?
|
| | | |
[C++] а так пойдет?? 25.03.03 21:20
Автор: iokana <iokana jon> Статус: Member
|
> Короче, вот это: > > > UINT a;
> // ...
> CString s;
> s.Format("%u", a);
> // Use s according to your needs
>
> > подходит? посмотрим...
.
.
.
.
void CxxxxxView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
.
.
CxxxxxDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// pDoc->s += nChar; так было исходно и в 6-м работало
pDoc->s += s.Format("%u", nChar);
Invalidate();
CView::OnChar(nChar, nRepCnt, nFlags);
.
.
.
}
и в выводе:
void CxxxxxView::OnDraw(CDC* pDC)
{
.
.
.
pDC->TextOut(0, 0, pDoc->s);
}
|
| | | | |
[C++] Стоп, а тебе что нужно в строке? 25.03.03 21:30
Автор: Ktirf <Æ Rusakov> Статус: Elderman Отредактировано 25.03.03 21:31 Количество правок: 1
|
>
> void CxxxxxView::OnChar(UINT nChar, UINT nRepCnt, UINT > nFlags) > { > . > . > CxxxxxDoc* pDoc = GetDocument(); > ASSERT_VALID(pDoc); > // pDoc->s += nChar; так было исходно и в 6-м > работало > pDoc->s += s.Format("%u", nChar);
Я могу ошибаться, но по-моему Format, как и printf, возвращает число записанных символов... :(
Стоп! Так тебе в результате нужно получить в строке число или символ? Если второе (я сильно подозреваю, что так), то проще всего явным образом привести nChar к char/wchar_t (нужное выбрать). С соответствущими проверками, естественно. По-моему, это самый корректный вариант.
|
| | | | | |
[C++] Стоп, а тебе что нужно в строке? 28.03.03 21:30
Автор: iokana <iokana jon> Статус: Member
|
> >
> > void CxxxxxView::OnChar(UINT nChar, UINT nRepCnt, > UINT > > nFlags) > > { > > . > > . > > CxxxxxDoc* pDoc = GetDocument(); > > ASSERT_VALID(pDoc); > > // pDoc->s += nChar; так было исходно и в 6-м > > работало > > pDoc->s += s.Format("%u", nChar); > > Я могу ошибаться, но по-моему Format, как и printf, > возвращает число записанных символов... :( > > Стоп! Так тебе в результате нужно получить в строке число > или символ? Если второе (я сильно подозреваю, что так), то > проще всего явным образом привести nChar к char/wchar_t > (нужное выбрать). С соответствущими проверками, > естественно. По-моему, это самый корректный вариант.
надо чтобы в методе OnDraw выводилось то, что вводиться с клавиатуры
значиться делалось:
в хххDoc.h создавалась просто буфер хранения введенного - пременная CString StringData;
в хххDoc.срр она инициалировалась StringData = "";
а само нажатие читалось
void CxxxView::OnChar(UINT nChar, UINT RepCnt, UINT nFlags)
{
CxxxDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->StringData += nChar;
Invalidate();
}
ну и в OnDraw:
void CxxxView::OnDraw(CDC* pDC)
{
CxxxDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0, 0, pDoc->StringData);
}
на что при компиляции писалось - operator += is ambiguous
чё ту не ясного или двусмысленного я так пока и не понял???
вот такие делы!!
|
| | | | | | |
[C++] Стоп, а тебе что нужно в строке? 29.03.03 01:56
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
> void CxxxView::OnChar(UINT nChar, UINT RepCnt, UINT nFlags) > { > > CxxxDoc* pDoc = GetDocument(); > ASSERT_VALID(pDoc); > pDoc->StringData += nChar; > Invalidate(); > } > на что при компиляции писалось - operator += is ambiguous > чё ту не ясного или двусмысленного я так пока и не понял??? Двусмысленность в том, что UINT может трактоваться либо как многобайтовый символ (напрмер, символ Unicode), либо как число. Если ты его насильно приведешь к unsigned wchar_t или даже просто к unsigned char, неоднозначность исчезнет. Советую, впрочем, проверять, что на самом деле находится в этом UINT, а потом уже приводить, а то мало ли...
|
| | | | | | | |
[C++] Стоп, а тебе что нужно в строке? 31.03.03 18:39
Автор: iokana <iokana jon> Статус: Member
|
> ambiguous > > чё ту не ясного или двусмысленного я так пока и не > понял??? > Двусмысленность в том, что UINT может трактоваться либо как > многобайтовый символ (напрмер, символ Unicode), либо как > число. Если ты его насильно приведешь к unsigned wchar_t > или даже просто к unsigned char, неоднозначность исчезнет. > Советую, впрочем, проверять, что на самом деле находится в > этом UINT, а потом уже приводить, а то мало ли... реальный пример [этого дела] привести можешь?? заранее спасибо..
|
| | | | | | | | |
[C++] Ты хочешь пример неудачного приведения к char или пример проверки UINT'а? 31.03.03 19:09
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
|
| | | | | | | | | |
[C++] хотя вообще-то, надо конечно второе про UINT 03.04.03 21:44
Автор: iokana <iokana jon> Статус: Member
|
пжалуста
|
| | | | | | | | | |
[C++] да, давай и то и другое 01.04.03 21:37
Автор: iokana <iokana jon> Статус: Member
|
|
| | | | | | | | | | |
Поиск в MSDN по OnChar и последующие несколько кликов - рекомендую 04.04.03 15:30
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
Начнем с неудачного приведения. Если мы просто пишем TCHAR(nChar), то в теории подвох очевиден - у UINT область определения больше, и если значение в UINT вылезает за пределы TCHAR, приведение проходит неправильно. На практике фигня вылезает в другом месте, потому что в MSDN этот самый UINT, за исключением некоторого списка значений, лежащих в пределах области определения TCHAR считается displayable characters, из чего я делаю вывод, что на самом деле все, что приходит в nChar, вполне приводимо к TCHAR. А вот в списке исключений находится, например, такое смешное значение как 08 (backspace). Соответственно, в наивной реализации (как у тебя) этот backspace благополучно запишется в строку. Ты уверен, что именно это тебе нужно? :)
Честно говоря, все вышесказанное относится не к CWnd::OnChar, а к событию WM_CHAR как таковому, но я не думаю, что перед вызовом OnChar дефолтный TranslateMessage отсекает спецсимволы - это было бы нелогично, потому что спецсимволы тоже могут быть полезны.
Сорри за кучу подробностей, но думаю, что так лучше :)
Что касается примера - в ссылке находится страничка MSDN, на которой рассказывает об использовании события WM_CHAR. Твоя задача взять switch, который там написан, и заполнить его необходимым.
По-моему, раздел "Processing character messages" - это то, что тебе нужно
|
| | | | | | | | | | | |
спасибо, попробуем.. 04.04.03 21:32
Автор: iokana <iokana jon> Статус: Member
|
|
|
|