Invalidate() и Pdc-textout(0,0, U)

Тема в разделе "MS Visual C++", создана пользователем gongex, 30 дек 2007.

Статус темы:
Закрыта.
  1. gongex

    gongex Гость

    В MFC в событии левой кнопки мыши написал u="200";и метод OnDraw не вызывается там через Invalidate()Каким оператором вызвать перерисовку при щелчке?

    вопрос 2.В pDC->TextOut(0,0,u) - переменная u не может обьявляться как число,Почему?Я хочу сделать int u; и потом u++; а вынужден писать CString i;
     
  2. gongex

    gongex Гость

    int t;
    T++;
    pDC->TextOut(0,T,"Table");
    Не срабатывает.Почему??
     
  3. gamecreator

    gamecreator Гость

    <!--QuoteBegin-gongex+30:12:2007, 19:07 -->
    <span class="vbquote">(gongex @ 30:12:2007, 19:07 )</span><!--QuoteEBegin-->переменная u не может обьявляться как число,Почему?Я хочу сделать int u; и потом u++; а вынужден писать CString i;[/quote]#include <stdlib.h>
    ...
    pDC->TextOut(0,0,itoa(u,0,10));
    ....

    <!--QuoteBegin-gongex+31:12:2007, 11:07 -->
    <span class="vbquote">(gongex @ 31:12:2007, 11:07 )</span><!--QuoteEBegin-->Не срабатывает.Почему??[/quote]C++ различает нижний и верхний регистр

    <!--QuoteBegin-gongex+30:12:2007, 19:07 -->
    <span class="vbquote">(gongex @ 30:12:2007, 19:07 )</span><!--QuoteEBegin-->метод OnDraw не вызывается там через Invalidate()[/quote]его можно вызвать практически везде.
     
  4. gongex

    gongex Гость

    Добавил в CViev.cpp
    #include <stdlib.h>

    ...
    pDC->TextOut(0,0,itoa(u,0,10));
    открывается файл xtoa.c и там значится ошибка.Что значит (u,0,10)? ноль и 10 э
    то что?

    Как текст перебросить на следующую строку?
    pDC->TextOut(0,0,"pppp \n lllll \n kkkkk"; не срабатывает "\n"
     
  5. gamecreator

    gamecreator Гость

    <!--QuoteBegin-gongex+31:12:2007, 14:25 -->
    <span class="vbquote">(gongex @ 31:12:2007, 14:25 )</span><!--QuoteEBegin-->открывается файл xtoa.c и там значится ошибка.[/quote]значит
    ...
    char some_str[20];
    pDC->TextOut(0,0,itoa(u,some_str,10));
    ...
    char* itoa(int value,char* string,int radix) записывает число value в виде символьной строки в string с системой счисления radix и возвращает указатель на эту строку. radix находится в диапазоне [2;36]
    например, выполнив
    int value=3;
    char string[20];
    cout<<itoa(value,string,3);
    на экране получим 10
     
  6. Pasha

    Pasha Гость

    <!--QuoteBegin-gongex+31:12:2007, 14:25 -->
    <span class="vbquote">(gongex @ 31:12:2007, 14:25 )</span><!--QuoteEBegin-->Что значит (u,0,10)? ноль и 10 э
    то что?
    [snapback]91920" rel="nofollow" target="_blank[/snapback]​
    [/quote]"Это что" наверняка подробно описано в документации.
    <!--QuoteBegin-gongex+31:12:2007, 14:25 -->
    <span class="vbquote">(gongex @ 31:12:2007, 14:25 )</span><!--QuoteEBegin-->Как текст перебросить на следующую строку?
    [snapback]91920" rel="nofollow" target="_blank[/snapback]​
    [/quote]Выводи текст через pDC->DrawText(...)
     
  7. gongex

    gongex Гость

    Run-Time Check Failure #2 - Stack around the variable 'some_str' was corrupted.

    ?

    void Czet3View::OnDraw(CDC* pDC)
    {
    Czet3Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    char some_str[20];
    pDC->TextOut(0,0,itoa(u,some_str,3));
    pDC->TextOut(0,0,pDoc->i);
    if (!pDoc)
    return;

    // TODO: ¦b¦№Ґ[¤J­мҐНёк®ЖЄєґyГёµ{¦ЎЅX

    }- показывает на эту скобку желтой стрелкой

    В общем я хочу чтобы при клике мышки на экране было 0,1,2,3....при клике число прибавляется...Я проштудировал книги 4 и решил сделать первую прогу.Эту
     
  8. gamecreator

    gamecreator Гость

    может
    void Czet3View::OnDraw(CDC* pDC)
    {
    Czet3Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
    return;

    char some_str[20];
    pDC->TextOut(0,0,itoa(u,some_str,3));
    pDC->TextOut(0,0,pDoc->i);

    }
     
  9. Pasha

    Pasha Гость

    Для: gongex
    Все очень просто. Скорее всего, ты не устанавливаешь начальное значение u. itoa(u,some_str,3) запихивает в some_str представление u в троичной системе. Представление оказывается длиннее 20 символов, вылазит за пределы some_str и портит стэк, в котором some_str лежит.
     
  10. gongex

    gongex Гость

    u=5;
    char some_str[20];
    pDC->TextOut(0,0,itoa(u,some_str,3));
    Бесполезно. И сделал после if (!pDoc) тоже не то.Дело в символах,Ты не те операторы дал.
     
  11. gamecreator

    gamecreator Гость

    а, так если ты указываешь на вывод строку, а не обьект CString, то надо писать количество символов 4-м параметром
     
  12. Pasha

    Pasha Гость

    <!--QuoteBegin-gongex+31:12:2007, 16:03 -->
    <span class="vbquote">(gongex @ 31:12:2007, 16:03 )</span><!--QuoteEBegin-->u=5;
    char some_str[20];
    pDC->TextOut(0,0,itoa(u,some_str,3));
    [snapback]91932" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    В каком смысле "бесполезно"? Работает, выводит 12 в левом верзнем углу. И при чем тут вообще символы и операторы?


    <!--QuoteBegin-gamecreator+31:12:2007, 16:30 -->
    <span class="vbquote">(gamecreator @ 31:12:2007, 16:30 )</span><!--QuoteEBegin-->а, так если ты указываешь на вывод строку, а не обьект CString, то надо писать количество символов 4-м параметром
    [snapback]91937" rel="nofollow" target="_blank[/snapback]​
    [/quote]Не нужно, есть implicit преобразование. Если, конечно, поддержка юникода выключена :)
     
  13. gongex

    gongex Гость

    не понял.Если int u; обьявляю в Doc.h то она для OnLButtonown не доступна
    а если обьявляю в CViev.h то для OnDraw не доступна
    Как обявить ваще глобальную переменную для общего доступа?
    И обьявлял их как public

    (public:
    virtual ~Czet3View();
    int u;)
    или
    (public:
    virtual ~Czet4Doc();
    int i;)



    вместо цифры "3" надо поставить "20" и будет показывать реальное число
     
  14. Pasha

    Pasha Гость

    <!--QuoteBegin-gongex+31:12:2007, 17:16 -->
    <span class="vbquote">(gongex @ 31:12:2007, 17:16 )</span><!--QuoteEBegin-->вместо цифры "3" надо поставить "20" и будет показывать реальное число
    [snapback]91940" rel="nofollow" target="_blank[/snapback]​
    [/quote]а почему именно 20?
     
  15. gamecreator

    gamecreator Гость

    а я не знал что у нас 20-ричная система счисления
     
  16. gongex

    gongex Гость

    так получилось,не знаю почему.Если u=5 я хочу чтобы писалось 5 а не 12.......12 вместо пяти это недоработка микрософт
     
  17. Pasha

    Pasha Гость

    <!--QuoteBegin-gongex+31:12:2007, 21:06 -->
    <span class="vbquote">(gongex @ 31:12:2007, 21:06 )</span><!--QuoteEBegin-->так получилось,не знаю почему.Если u=5 я хочу чтобы писалось 5 а не 12.......12 вместо пяти это недоработка микрософт
    [snapback]91956" rel="nofollow" target="_blank[/snapback]​
    [/quote]а если вместо 20 написать 36, и выполнить для u=29234652, то можно будет посмотрет на пасхальное яйцо от Microsoft :)
     
  18. gongex

    gongex Гость

    Как обьявить int u; чтобы срабатывало и при клике мышки и в зарисовке OnDraw?

    Хочу написать в окне представления несколько стихов,для этого надо обьявлять столько переменных,сколько строк?Нельзя ли написать весь стих в одной переменной и показывать его в переводом на новую строку?
     
  19. gongex

    gongex Гость

    int i=3;
    pDC->TextOut(0,i,"p");не срабатыывает

    (вот так начались мои опыты на с++:unsure:) )
     
  20. Pasha

    Pasha Гость

    Для: gongex
    Не пытайся взять плюсы наскоком. Найди хороший учебник по C/C++. Потом книгу по программированию под Windows, и книгу по использованию MFC.
     
Статус темы:
Закрыта.

Поделиться этой страницей