EditBox

Тема в разделе "MS Visual C++", создана пользователем iktomy, 15 окт 2004.

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

    iktomy Гость

    Привет всем! Visual C++ 6 & MFC
    Такая вот фигня получается: Имеется форма с двумя эдитами. В первый пишу слово - название месяца. Во вторую должно выводить такую строку - "номер месяца" и само слово месяц в зависимости от падежа. Например пишу "октября", а должно вывести "10 месяца". Присвоил эдитам переменные m_Input и m_Output типа CString. В функцию кнопки ввел код:
    Код (Text):
    CString jan[]  = {"январь", "января",  "январю", "январем", "январе"};
     CString febr[]  = {"февраль", "февраля", "февралю", "февралем", "феврале"};
     CString march[]  = {"март", "марта", "марту", "мартом", "марте"};
     CString april[]  = {"апрель", "апреля", "апрелю", "апрелем", "апреле"};
     CString may[]  = {"май", "мая", "маю", "маем", "мае"};
     CString june[]  = {"июнь", "июня", "июню", "июнем", "июне"};
     CString july[]  = {"июль", "июля", "июлю", "июлем", "июле"};
     CString august[]= {"август", "августа", "августу", "августом", "августе"};
     CString sept[]  = {"сентябрь", "сентября", "сентябрю", "сентябрем", "сентябре"};
     CString octob[]  = {"октябрь", "октября", "октябрю", "октябрем", "октябре"};
     CString novem[]  = {"ноябрь", "ноября", "ноябрю", "ноябрем", "ноябре"};
     CString decem[]  = {"декабрь", "декабря", "декабрю", "декабрем", "декабре"};
      CString month[]  = {"месяц", "месяца", "месяцу", "месяцем", "месяце"};
      for(int i=0; i<5; i++)
     {
       if(m_Input == jan[i])
       {
         UpdateData(TRUE);
         m_Output += "1 ";
         m_Output += month[i];
         UpdateData(FALSE);
       }
     }

     for(int i=0; i<5; i++)
     {
       if(m_Input == febr[i])
       {
         UpdateData(TRUE);
         m_Output += "2 ";
         m_Output += month[i];
         UpdateData(FALSE);
       }
     }
     // и т.д. пока все месяцы не перебру
    В OnInitDialog установил русскую раскладку языка LoadKeyboardLayout("00000419", KLF_ACTIVATE).
    Но нифига не получается. Не выводит во второй эдит того, что мне нужно. Пробовал вместо m_Input == jan делать m_Input.CompareNoCase( jan) == 0 (и просто Compare пробовал) - результат тот же. Что делать - ума не приложу. Хелп ми плиз, кто чем может.
     
  2. iktomy

    iktomy Гость

    <!--QuoteBegin-iktomy+15:10:2004, 11:18 -->
    <span class="vbquote">(iktomy @ 15:10:2004, 11:18 )</span><!--QuoteEBegin-->
    Код (Text):
      for(int i=0; i<5; i++)
     {
       if(m_Input == febr[i])
       {
         UpdateData(TRUE);
         m_Output += "2 ";
         m_Output += month[i];
         UpdateData(FALSE);
       }
     }
    [/quote]
    А оказывается все очень просто:
    Надо только поменять положение UpdateData(TRUE) в коде -
    Код (Text):
    for(int i=0; i<5; i++)
    {
      UpdateData(TRUE);
      if(m_Input == febr[i])
      {    
        m_Output += "2 ";
        m_Output += month[i];
        UpdateData(FALSE);
      }
    }
    И всего то делов!
    Огромное спасибо за подсказку чукотскому шаману craftyfox'у :)
     
Загрузка...
Похожие Темы - EditBox
  1. kmsboy
    Ответов:
    0
    Просмотров:
    981
Статус темы:
Закрыта.

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