Я взял этот пример подкласса HWND формы в качестве отправной точки, а затем добавил в код jrohde от отсюда , который предназначен для того, чтобы вы могли перетаскивать форму, щелкая в любом месте наэто (не на панели заголовка).Этот код завершается с ошибкой в строке ReleaseCapture()
с этим сообщением: E2283 Use . or -> to call '_fastcall TCommonCustomForm::ReleaseCapture()
Если я закомментирую эту строку, код запускается, и я могу перемещать форму левой кнопкой мыши и перетаскивать, но я не могу позволитьидти из этого.Мышь застревает в форме, как липучка.Если я заменим ReleaseCapture()
на ShowMessage
, я могу вырваться, но это явно не тот путь ...
Что мне нужно сделать, чтобы запустить RestoreCapture()
?Это приложение Win32.
НИЖЕ КОДА Я добавил в оригинальный блок switch (uMsg):
// two int's defined above the switch statement
static int xClick;
static int yClick;
// new case added to the switch
case WM_LBUTTONDOWN:
SetCapture(hWnd);
xClick = LOWORD(lParam);
yClick = HIWORD(lParam);
break;
case WM_LBUTTONUP:
//ReleaseCapture(); // This is the problem spot <------------------------
ShowMessage("Up");
break;
case WM_MOUSEMOVE:
{
if (GetCapture() == hWnd) //Check if this window has mouse input
{
RECT rcWindow;
GetWindowRect(hWnd,&rcWindow);
int xMouse = LOWORD(lParam);
int yMouse = HIWORD(lParam);
int xWindow = rcWindow.left + xMouse - xClick;
int yWindow = rcWindow.top + yMouse - yClick;
SetWindowPos(hWnd,NULL,xWindow,yWindow,0,0,SWP_NOSIZE|SWP_NOZORDER);
}
break;
спасибо, russ