我試圖通過將其放入類中來清除一些現有的win32 UI代碼。以前我有一個AppDlgProc功能是這樣的:調用win32 API並給予類功能回調
BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { ... }
這在我以前像這樣:
DialogBoxParam(hInstance, (LPCTSTR)IDD_SETTINGS, 0, AppDlgProc, 0);
現在我把所有這一切在SettingsWindow對象,我叫settingsWindow->顯示()這揭開了這個:
void SettingsWindow::show(HINSTANCE hInstance) {
DialogBoxParam(hInstance, (LPCTSTR)IDD_SETTINGS, 0, &SettingsWindow::AppDlgProc, 0);
}
我很確定我在這裏給回調方法不正確。 Visual Studio告訴我「Intellisense:類型的參數...與DLGPROC類型的參數不兼容」。谷歌搜索似乎告訴我似乎告訴我I need another argument - 有沒有其他的方式?
僅供參考,我AppDlgProc函數現在看起來是這樣的:
BOOL CALLBACK SettingsWindow::AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { ... }
Raymond Chen寫道:[我如何使回調函數成爲我的C++類的成員?](http://blogs.msdn.com/b/oldnewthing/archive/2014/ 01/27/10492898.aspx) – 2014-09-05 05:07:52
調用約定不匹配,你不能只將一個非靜態成員函數傳遞給一個需要'CALLBACK'函數的函數。 – user657267 2014-09-05 05:08:37