實現類非靜態成員函式做視窗過程函式

2021-06-13 17:35:04 字數 700 閱讀 3007

實現類非靜態成員函式做視窗過程函式,無非是想辦法把類物件指標傳遞給視窗過程。最簡單的辦法是使用全域性變數,在很多場景下是快捷有效的辦法。這裡介紹的辦法是借助::setwindowlong(hwnd, gwl_userdata, (long)pwindow)呼叫,把類指標傳遞給視窗。在視窗過程函式中再呼叫 getwindowlong來獲取出來使用。

通過createwindowex最後乙個引數,把類指標傳遞給視窗,詳見**:

class cmywindow

else

if (null != pwindow)

else

}virtual lresult wndprocself(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)

virtual hwnd createex(dword dwexstyle,

lpctstr lpszclass,

lpctstr lpszname,

dword dwstyle,

int x, int y,

int nwidth, int nheight,

hwnd hparent,

hmenu hmenu,

hinstance hinst)

private:

hwnd m_hwnd;

};

在類的靜態成員函式中使用類的非靜態成員

我們知道,類的靜態成員函式只能訪問類的靜態資料成員和類的其他靜態函式,eg includeusing namespace std class a static void func2 void func3 int main 如果我們要在類的靜態成員函式中使用類的非靜態成員函式和非靜態資料成員時,可以通...

C 靜態成員函式訪問非靜態成員

如果類沒有被建立,則沒有對應的成員,也就無法訪問 下面這種方法需要先建立類,並將類作為引數傳遞給靜態成員函式才能訪問。include using namespace std class person class student public person static void get age st...

類靜態成員和類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...