KbMonitor .h:
typedef void (*InputProcess)(int key, void *p);
class KbMonitor : public QThread
{
public:
void setCallBackProcess(InputProcess pf, void* pUser);
private:
InputProcess m_pf;
void *m_puser;
}
KbMonitor.cpp:
KbMonitor::KbMonitor()
{
m_pf = NULL;
m_puser = NULL;
}
void KbMonitor::setCallBackProcess(InputProcess pf, void* pUser)
{
m_pf = pf;
m_puser = pUser;
}
void KbMonitor::run()
{
if(m_pf)
m_pf(key, m_puser);
}
MainWindow.h:
class MainWindow
{
static void Process(int key, void* puser);
KbMonitor *m_kbMonitor;
}
MainWindow.cpp:
void MainWindow::Process(int key, void* puser)
{
MainWindow * pWinDlg = (MainWindow*)puser;
pWinDlg->handleInputMsg(key);
}
MainWindow::MainWindow()
{
m_kbMonitor->setCallBackProcess(Process, this);
}