информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach