Получить имя диалога и класс, к которому он принадлежит...

Тема в разделе "WASM.BEGINNERS", создана пользователем turistti, 22 фев 2007.

  1. turistti

    turistti New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    7
    Уважаемые, кто знает, помогите!!
    Ситуация следующая. Есть БО_О_ОЛЬшущая программа!!! соответственно, там есть и диалоги разные и их много... дык вот. мне нужно найти в ней ошибку.... клиентосы обнаружили, что там в случается такой казус - диалоговое окно не реагирует на кнопку "Отмена"...то есть она нажимается, но ответной реакци - ноль.
    это бывает редко, но бывает соответственно задача найти, из-за чего такое возникает. Сначала просто попробовали тысячу раз делать что-то подобное, что делают клиенты и зафиксировать моменть, когда такое получается... не смогли.... то есть сделали вывод, что это ошибкане постоянная, а плавающая. Решили попробовать сделать следующее, в том диалоге на ктоторый жалуются клиентосы, сделать реакцию на нажатие клавиши Alt+X в виде записи в журнал (лог-файл) имен диалоговых окон и классу, к которому он принадлежит. Сказали мне ребята. и смылись на праздник... а меня работать оставили. типа нужно за сегодня доделать. а я как человек, еще не так давно работающий с Си++ никак не могу сообразить, как же сделать так, чтобы при нажатии alt+x программа выдала названия всех открытых диалогов.....
    что имется на данный момент...
    Код (Text):
    1. IMPL_HANDLE_EVENT(BillDialog)
    2. {
    3. ....
    4. if(TVCOMMAND)
    5.     switch(TVCMD) {
    6.         case cmClusterClk:
    7. ...
    8.         case cmCBSelected:
    9. ...
    10.     switch(TVCHR) {
    11.         case kbAltX:
    12.             msg_buf.Cat(NameDialog).CatDiv(';', 1).Cat(ClassDialog);
    13.             PPLogMessage(PPFILNAM_DEBUG_LOG, msg_buf, 0, 0);
    14.             break;
    15.     }
    16. .....
    17. }
    пояснения:
    1) #define IMPL_HANDLE_EVENT(cls) void cls::handleEvent(TEvent & event)
    2) #define kbAltX 0x2d00
    3) int PPLogMessage(const char * pFileName, const char * pStr, long options, int maxFileSize = 8192);
    4)
    Код (Text):
    1. SString & FASTCALL SString::Cat(const char * pS)
    2. {
    3.     const size_t add_len = pS ? strlen(pS) : 0;
    4.     if(add_len) {
    5.         const size_t new_len = (L ? L : 1) + add_len;
    6.         if(Alloc(new_len)) {
    7.             memcpy(P_Buf+Len(), pS, add_len+1);
    8.             L = new_len;
    9.         }
    10.     }
    11.     return *this;
    12. }
    13.  
    14. SString & SLAPI SString::CatDiv(int c, int addSpaces, int ifNotEmpty)
    15. {
    16.     if(!ifNotEmpty || Strip().NotEmpty()) {
    17.         if(addSpaces > 0 && addSpaces != 2)
    18.             Space();
    19.         CatChar(c);
    20.         if(addSpaces)
    21.             Space();
    22.     }
    23.     return *this;
    24. }
    вот, поможите!!!! НА ПРАЗДНИК ХОЧУ!!!
     
  2. turistti

    turistti New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    7
    А-А-А-А!!! НЕУЖЕЛИ НИКТО ПОМОЧЬ НЕ МОЖЕТ?
    НУ ХОТЬ НАМЕК ИЛИ ВАРИАНТИК КАКОЙ-НИТЬ, КАК ВОЗМОЖНО ЭТО СДЕЛАТЬ?