【初心者歓迎】C/C++室 Ver.8【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0707デフォルトの名無しさん
NGNGstaticを付けると静的関数になるのでthisポインタはない。
そこで下のようにするとメンバ関数RealWindowProcがthis付きで呼ばれる。
ただしCreateWindow(Ex)の最後のパラメータにHogeへのポインタを渡す必要があるから、
クラスのメンバにCreateWindow(Ex)を行う関数が絶対必要。
class Hoge {
static WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual RealWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
};
LRESULT CALLBACK Hoge::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
Hoge *pWnd = reinterpret_cast<Hoge *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (uMsg == WM_NCCREATE)
{
pWnd = static_cast<Hoge*>(static_cast<LPCREATESTRUCT>(lParam)->lpCreateParams);
SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(pWnd));
}
if (pWnd)
pWnd->RealWindowProc(hwnd, uMsg, wParam, lParam);
}
■ このスレッドは過去ログ倉庫に格納されています