CHUNGYUN / flylinkdc

Automatically exported from code.google.com/p/flylinkdc
0 stars 0 forks source link

Падаем в окне избранных хабов в _DEBUG конфигурации #1091

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
При нажатии правой кнопки мыша:
http://www.flickr.com/photos/96019675@N02/9306072715/

Original issue reported on code.google.com by Pavel.Pimenov@gmail.com on 17 Jul 2013 at 2:48

GoogleCodeExporter commented 9 years ago
Падаем в 
ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: D:\vc10\r5xx\compiled\flylinkdc_Debug.exe
File: d:\vc10\r5xx\wtl\atlctrls.h
Line: 3205

Expression: (GetStyle() & 0x0004) != 0

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Прервать   Повтор   Пропустить   
---------------------------

    // single-selection only
    int GetSelectedIndex() const
    {
        ATLASSERT(::IsWindow(m_hWnd));
        ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
        return (int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, (WPARAM)-1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0));
    }

Original comment by Pavel.Pimenov@gmail.com on 17 Jul 2013 at 2:51

GoogleCodeExporter commented 9 years ago
Агу, есть такое, однако оно работает, и 
можно на это забить. Ассерт предупреждает о 
том, что не всё выделенное будет обработано.

Original comment by a.rain...@gmail.com on 17 Jul 2013 at 3:07

GoogleCodeExporter commented 9 years ago
В r14544 мая выпилил вот такой велосипед:

2932        -   int WinUtil::getFirstSelectedIndex(const CListViewCtrl& list)
2933        -   {
2934        -       for (int i = 0; i < list.GetItemCount(); ++i)
2935        -       {
2936        -           if (list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
2937        -           {
2938        -               return i;
2939        -           }
2940        -       }
2941        -       return -1;
2942        -   }

и заменил на вызов GetSelectedIndex(). Имхо, даже с 
ассертом это лучше.

Original comment by a.rain...@gmail.com on 17 Jul 2013 at 3:11

GoogleCodeExporter commented 9 years ago
Как забить?
раньше ведь не падало
ctrlHubs.GetSelectedIndex() пр мультиселекте что вернет?
Хотя тут проверка 
if (ctrlHubs.GetSelectedCount() == 1)...

Original comment by Pavel.Pimenov@gmail.com on 17 Jul 2013 at 3:11

GoogleCodeExporter commented 9 years ago
Если не нравится ассерт можно написать 
другой велосипед, чем то схожий с GetNextSelected в 
наших шаблонных листах. Но сильно 
сомневаюсь, что в этом есть смысл.

Original comment by a.rain...@gmail.com on 17 Jul 2013 at 3:14

GoogleCodeExporter commented 9 years ago
>>ctrlHubs.GetSelectedIndex() пр мультиселекте что 
вернет?

вернёт индекс первого выбранного.

Original comment by a.rain...@gmail.com on 17 Jul 2013 at 3:15

GoogleCodeExporter commented 9 years ago
Ну так что? Воскрешать велосипед?

Original comment by a.rain...@gmail.com on 17 Jul 2013 at 3:24

GoogleCodeExporter commented 9 years ago
Нет. оставь пока так.
в коде только коммент нужно поставить

Original comment by Pavel.Pimenov@gmail.com on 17 Jul 2013 at 3:26

GoogleCodeExporter commented 9 years ago

Original comment by Pavel.Pimenov@gmail.com on 30 Jul 2013 at 2:56