Я создал свой собственный класс кнопок графического интерфейса пользователя для использования в приложениях Windows Mobile. Понимая, что мне нужен более тонкий контроль, и чтобы избавиться от раздражения, связанного с двойным щелчком, я решил, что все, что мне нужно сделать, это создать подкласс, как всегда.
Но то, что я заключил все в Класс, похоже, усложнило дело.
Ниже приведен фрагмент того, что я хочу сделать
// Graphic button class for Wizard(ing) dialogs.
class CButtonUXnav
{
private:
// Local subclasses of controls.
WNDPROC wpOldButton; // Handle to the original callback.
LRESULT CALLBACK Button_WndProc (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
.
,
.
int CButtonUXnav::CreateButton (LPCTSTR lpButtonText, int x, int y, int iWidth, int iHeight, bool gradeL2R)
{
xLoc = x;
yLoc = y;
nWidth = iWidth;
nHeight = iHeight;
wcscpy (wszButtonText, lpButtonText);
PaintButtonInternals (x, y, iWidth, iHeight, gradeL2R);
hButton = CreateWindow (L"BUTTON", wszButtonText,
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | BS_OWNERDRAW,
xLoc, yLoc, nWidth, nHeight,
hWndParent, IDbutn, hInstance, NULL);
// Subclass
// (to remove double-click annoyance.)
wpOldButton = (WNDPROC)GetWindowLong (hButton, GWL_WNDPROC);
if (wpOldButton == 0)
return 1;
// Insert our own callback.
SetWindowLong (hButton, GWL_WNDPROC, (LONG)Button_WndProc);
return 0;
}
Но я не могу избежать решения этой ошибки:
ошибка C2440: «приведение типа»: невозможно
конвертировать из 'LRESULT (__cdecl
CButtonUXnav :: *
) (HWND, UINT, WPARAM, LPARAM) 'до' ДОЛГО '
Ваши мысли?