0

VC++6プロジェクトをVC++2010に変換した後、すべてのエラーを修正しましたが、そのうちの1つで解決策が見つかりません。ビルド中に受け取ったエラー:

エラー1エラーC2440:'static_cast':'void(__thiscall CUploadDlg :: *)(void)'から'LRESULT(__thiscall CWnd :: *)(WPARAM、LPARAM)'に変換できません

エラーコード:

BEGIN_MESSAGE_MAP(CUploadDlg, CDialog)
    //{{AFX_MSG_MAP(CUploadDlg)
    ON_MESSAGE(PARSE_DB_MSG, ParseUserDb)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

呼び出されたメソッドのコード:

void CUploadDlg::ParseUserDb()
{
    m_parse_db.ShowWindow(SW_SHOW);    
    m_block_numbers = getBlockNumber();    
    Sleep(1200);    
//  CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();    
//  if(pFrame)  pFrame->UpdateDataBase(m_Path);    
    m_parse_finish.ShowWindow(SW_SHOW);    
//  Sleep(500);    
//  pFrame->SaveDataBase();//    
//  CDialog::OnCancel();
    //return 0L;
}

プロジェクトタイプ:アプリケーション、静的ライブラリでMFCを使用

4

1 に答える 1

1

MFC メッセージ マップのメッセージ クラッカーが期待する関数プロトタイプを見てください。ON_MESSAGE() は、基本的な msgID (マップへの配布方法) 以外の特定のメッセージをクラックする方法を知らない汎用ラッパーです。残りのパラメーターはメッセージ ハンドラーに渡す必要があるため、ParseUserDb は次のようになると予想されます。

LRESULT CUploadDialog::ParseUserDb(WPARAM wParam, LPARAM lParam)
{
// your code; don't forget a return value, likely 0L;
};
于 2012-10-01T13:35:55.183 に答える