2012-01-08 10 views
2

これも可能ですか?今Win32 WndProcをC++クラスにラップするには?

class Window { 
private: 
    WNDCLASSEX wc; 
public: 
    inline WNDCLASSEX getWindowClass() { 
     return wc; 
    } 
    Window(); 
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, LPARAM lParam, WPARAM wParam); 
} 

void RegisterWindow(Window win) { 
    WNDCLASSEX* wc = win.getWindowClass(); 
    RegisterClassEx(wc); 

} 

、どこか、おそらくそれが注目されるWNDCLASSEXWndProcを割り当てる必要がありますWindowクラスのコンストラクタ内のセクション(があるように起こっている:たとえば、のは、私は、次のしているとしましょうWindowクラス内の唯一の問題は、クラスの一部であるためにエラーが発生するということです。したがって、これはどのように達成されますか?静的にされていますか?それでも、クラスがラップすると、

+0

MFCを参照してください、それはWndProcのC++クラスにラップされています – Abyx

+0

MFCは表示されません。 anything.gのため – Puppy

+0

Express版の上に何も持っていないので使えません。 – zeboidlund

答えて

4

ポインターをとして渡します。〜SetWindowLongPtrを使用すると、自由に関数をメンバ関数に単純に転送することができます。

+1

うーん、私はかなり次のことではありません:GWLP_USERDATAとSetWindowLongPtrはどういう意味ですか? – zeboidlund

+1

@Holland:Googleの "SetWindowLongPtr"をクリックして* first *の結果をクリックした場合... – Puppy

+0

私の 'HWND'がまだ初期化されていないので、これを使うことはできません。 – zeboidlund

関連する問題