собственно, не удалось мне обработать двойной клик - никакой - в родительском окне. Просто не прилетает такого сообщения в. Видимо - надо производить дитё от класса и там ловить.
а вот всё остальное :
The DefWindowProc function passes the WM_SETCURSOR message to a parent window before processing. If the parent window returns TRUE, further processing is halted. Passing the message to a window's parent window gives the parent window control over the cursor's setting in a child window. The DefWindowProc function also uses this message to set the cursor to an arrow if it is not in the client area, or to the registered class cursor if it is in the client area. If the low-order word of the lParam parameter is HTERROR and the high-order word of lParam specifies that one of the mouse buttons is pressed, DefWindowProc calls the MessageBeep function.
и вот это неплохо работает: добавляем в диалог виртуальную DefWindowProc и пишем там обработку
LRESULT CMyDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message==WM_SETCURSOR)
{
if(GetDlgItem(IDC_LIST1)->m_hWnd==(HWND)wParam)
{
if(((WORD)lParam)==HTCLIENT)//по клиентской части
{
switch( *(1+(WORD*)&lParam) )
{
case WM_LBUTTONUP:
{
//обрабатываем
//...
return 1;
}
break;
case WM_LBUTTONDOWN:
{
//обрабатываем
//...
return 1;
}
break;
//...
//WM_MOUSEMOVE
//WM_RBUTTONDOWN
//WM_RBUTTONUP
//WM_MBUTTONDOWN
//WM_MBUTTONUP
}
}
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}