Я пытаюсь переместить мою форму с помощью левой кнопки мыши. У меня есть это:Convert Point to Point^
if(e->Button == Windows::Forms::MouseButtons::Left)
{
Point^ mousePos = gcnew Point();
mousePos = Control::MousePosition;
mousePos->Offset(mouse_offset->X,mouse_offset->Y);
Location = mousePos;
}
код кажется нормально, но ошибка Визуальная возвращения:
error C2664: 'void System::Windows::Forms::Control::Location::set(System::Drawing::Point)' : cannot convert parameter 1 from 'System::Drawing::Point ^' to 'System::Drawing::Point'
Я не понимаю - я создал переменную mousePos как точка ^. Вы не знаете, что случилось?
«Я создал переменную mousePos как точку ^» - вот в чем проблема. Метод ожидает Point, но вы даете ему указатель на Point. –
@ H2CO3: вы были правы, спасибо за помощь :) –
У вас большая проблема, когда вы пишете такой код, вы не понимаете разницу между ссылочными типами (теми, с которыми вы используете шляпу), и типами значений, такими как Point. Это очень важно, создавая точку ^, которая создает тип значения * boxed *. Это не указатель на точку, это ссылка на объект. Очень неэффективен и принят компилятором без жалобы в слишком многих случаях. Вам повезло, отключив ошибку компиляции. Любая достойная книга о C++/CLI поможет вам понять разницу. –