Я пытаюсь создать программу Visual C++ 2008, которая отображает некоторые данные в окне. Я прочитал разные places правильный способ сделать это — переопределить WndProc. Итак, я создал приложение Windows Forms в Visual C++ 2008 Express Edition и добавил этот код в Form1.h, но он не компилируется:
public:
[System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")]
virtual void WndProc(Message %m) override
{
switch(m.Msg)
{
case WM_PAINT:
{
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(m.HWnd, &ps);
// i'd like to insert GDI code here
EndPaint(m.Wnd, &ps);
return;
}
}
Form::WndProc(m);
}
Когда я пытаюсь скомпилировать это в Visual C++ 2008 Express Edition, возникает следующая ошибка: ошибка C2664: «BeginPaint»: невозможно преобразовать параметр 1 из «System::IntPtr» в «HWND»
Когда я пытаюсь использовать this->Handle вместо m.HWnd, возникает та же ошибка.
Когда я пытаюсь преобразовать m.HWnd в (HWND), возникает следующая ошибка: ошибка C2440: 'приведение типа': невозможно преобразовать из 'System::IntPtr' в 'HWND'
Может быть, мне нужно преобразовать m.HWnd в pin_ptr или что-то в этом роде.