Member 12677926 Ответов: 1

Проблема Peekmessage для WM_MOUSEFIRST, WM_MOUSELAST


while ( ::PeekMessage(&msg, m_hWnd, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) )

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


эту функциональность я написал для отслеживания strecthing ячейки.

Что я уже пробовал:

while ( true )
{
		MSG msg;
		while ( ::PeekMessage(&msg, m_hWnd, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) )
		{
			if ( msg.message != WM_MOUSEMOVE )
			{
				dc.DrawDragRect(&cRectLast, CSize(2, 2), NULL, CSize(2, 2));
				DispatchMessage(&msg);
				return;
			}
			else
			{
				CPoint cPoint(GET_X_LPARAM(msg.lParam),    GET_Y_LPARAM(msg.lParam));
            }

1 Ответов

Рейтинг:
2

KarstenK

То документация PeekMessage говорит, что он возвращает false только в том случае, если сообщение недоступно. Взгляните также на пример кода в этой статье.

Сделайте вывод входящих сообщений, чтобы лучше понять входящие сообщения.

Ваш фрагмент кода: внешний цикл будет выведен только с возвратом, иначе вы получите повторный вход в заголовок while.