pavel-pimenov / flylinkdc-r5xx

flylinkdc-r5xx
GNU General Public License v2.0
55 stars 27 forks source link

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

Closed pavel-pimenov closed 9 years ago

pavel-pimenov commented 9 years ago

From Pavel.Pimenov@gmail.com on July 17, 2013 16:48:17

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

Original issue: http://code.google.com/p/flylinkdc/issues/detail?id=1091

pavel-pimenov commented 9 years ago

From Pavel.Pimenov@gmail.com on July 17, 2013 07:51:33

Падаем в 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));
}
pavel-pimenov commented 9 years ago

From a.rain...@gmail.com on July 17, 2013 08:07:55

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

pavel-pimenov commented 9 years ago

From a.rain...@gmail.com on July 17, 2013 08:11:23

В 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(). Имхо, даже с ассертом это лучше.

pavel-pimenov commented 9 years ago

From Pavel.Pimenov@gmail.com on July 17, 2013 08:11:53

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

pavel-pimenov commented 9 years ago

From a.rain...@gmail.com on July 17, 2013 08:14:32

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

pavel-pimenov commented 9 years ago

From a.rain...@gmail.com on July 17, 2013 08:15:14

ctrlHubs.GetSelectedIndex() пр мультиселекте что вернет?

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

pavel-pimenov commented 9 years ago

From a.rain...@gmail.com on July 17, 2013 08:24:42

Ну так что? Воскрешать велосипед?

pavel-pimenov commented 9 years ago

From Pavel.Pimenov@gmail.com on July 17, 2013 08:26:24

Нет. оставь пока так. в коде только коммент нужно поставить

pavel-pimenov commented 9 years ago

From Pavel.Pimenov@gmail.com on July 29, 2013 19:56:14

Status: Done