我創建了我自己的自定義GUI按鈕類,以用於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;
}
但我似乎無法逃脫解決此錯誤:
error C2440: 'type cast' : cannot convert from 'LRESULT (__cdecl CButtonUXnav::* )(HWND,UINT,WPARAM,LPARAM)' to 'LONG'
您的想法?
「錯誤C2275: 'CButtonUXnav':非法使用這種類型的一個表達「。我明白了,我的挑戰是將其轉化爲代碼。 – 2011-03-03 13:37:24
對不起,我並不是說你實際上寫'&CButtonUXnav'作爲第三個參數,因爲這沒有意義。你可能會通過(長)這個。 – 2011-03-03 13:45:31
我編輯了我的答案以提供示例。 – 2011-03-03 14:18:31