全局函数(或者回调函数)访问类成员函数
全局或回调函数访问类成员,这个问题有些老生长弹,但有很多方法都可以用,这里进行小小的总结一下。
第一种方法:使用API函数:
SendMessage(AfxGetMainWnd()->m_hWnd,DRAWPIC_OWNER,NULL,NULL);
SendMessage(AfxGetApp()->GetMainWnd()->m_hWnd,DRAWPIC_OWNER,NULL,NULL);
SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),DRAWPIC_OWNER,NULL,NULL);
CWnd::FromHandle(HWND hwnd) //HWND与CWND互转
AfxGetMainWnd()->GetDlgItem(IDC_EDIT1)->SetWindowText(_T("aaa"));
第二种方法:使用程序本身的全局变量
在app的类中,VC会自动定义一个theApp全局变量,而且主界面里会自动包含他,自己定义的窗体可以包含头文件后自动使用
PostMessage(theApp.m_pMainWnd->GetSafeHwnd(),DRAWPIC_OWNER,NULL,NULL);
第三种方法:使用程序自定义的全局变量或指针 (与C++BUILDER中相似,访问对象的指针)
XXXClass *p或者XXXClass b;在生成窗体或实例对象时,让p=&对象,或者b = 对象;然后用extern在使用处使用。
第四种方法,象线程的函数一样,在创建时把当前窗体或需要的窗体类的指针当作参数传进去。
还有一种很笨的方法,用定时器定时查看全局函数中的全局数据,到达目的后就可以直接操作了。