LRESULT CALLBACK PlayWindow::PlayWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)//這是一個static成員函數
{
switch (uMsg)
{
case WM_LBUTTONDOWN:
if(m_pIPlayCtrl->GetStatus() == 3)
{
m_pIPlayCtrl->Pause();
}
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
由於PlayWindowProc是窗口過程,在類中定義成static成員函數,m_pIPlayCtrl是非static變量,訪問出現問題。
解決該問題:可以在static成員函數PlayWindowProc變爲非static成員函數,另外添加一個static成員函數__PlayWindowProc,調用PlayWindowProc,這樣PlayWindowProc就可以訪問非static成員了。如下所示:
LRESULT CALLBACK PlayWindow::__PlayWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PlayWindow* pThis = reinterpret_cast<PlayWindow*>(GetWindowLong(hWnd, GWL_USERDATA));
if(pThis)
{
return pThis->PlayWindowProc(hWnd, uMsg, wParam, lParam);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
//視頻播放窗口的過程函數////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK PlayWindow::PlayWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_LBUTTONDOWN:
if(m_pIPlayCtrl->GetStatus() == 3)
{
m_pIPlayCtrl->Pause();
}
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}