请教,VC里面要CALL BACK函数干什么? 初学VC,一直没有搞清VC里面要CALL BACK函数干什么,另外,我正在看关于多线程的书籍,可是看书上的代码看不懂,不知道VC该怎么学,请大虾们多多指教,不胜感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Callback函数是回调函数,比如我们再用SDK开发时,消息处理就是回调函数,具体什么作用,也不太明白。好像是参数出栈入栈有区别 CALLBACK 是回调函数,以往的 DOS 系统只是由程序调用系统函数,而 Windows 系统则可以调用程序函数,如果你深入 Windows 系统原理,其实每个程序的窗口过程就是一个回调函数,每当有消息来时 Windows 调用应用程序的回调函数。所以这里是由系统调用程序的函数来进行的。 具体做用? 假设我们要获得所有已打开的应用程序,我们调用 EnumWindows 这个函数, 那么怎么得到所有活动窗口的 Handle 呢? 以往的方法可以通过结构,指针传递,那么在 Windows 里 EnumWindows 的参数是BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ); 第一个参数是一个函数,当 EnumWindows 每找到一个窗口, 就调用这个函数,并传递这个窗口的 Handle 。 你试试看:BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam ){ char WinName[100]; GetWindowText( hwnd, WinName, 100 ); AfxMessageBox( WinName ); return TRUE;} 你的程序里写好上面这个回调, 然后调用 EnumWindows( EnumWindowsProc, 0 ); 原因是,除了你调用窗口函数,操作系统也要调用你的窗口函数.窗口函数设计为callback形式,才能开放出一个节口给操作系统调用 CALL BACK 是回调函数,这种函数一般不要你自己调用,而是系统在适当的时候自动调用的。 修改对话框背景颜色 工具栏和拆分窗口的问题 请问用什么类型的钩子拦截WM_SHOWWINDOW消息 Activex控件更新问题 有关STL的迭代器的弱弱问题 LPSTR 怎么转换成 _variant_t 和 _bstr_t ? 如何在CMyView(继承自CScrollView)中用键盘输入字符串?文本 读文本文件的问题!!! 积分问题 此种迭代器的用法是否有错? 高程 图标问题
CALLBACK 是回调函数,以往的 DOS 系统只是由程序调用系统函数,而 Windows 系统则可以调用程序函数,如果你深入 Windows 系统原理,其实每个程序的窗口过程就是一个回调函数,每当有消息来时 Windows 调用应用程序的回调函数。所以这里是由系统调用程序的函数来进行的。
具体做用? 假设我们要获得所有已打开的应用程序,我们调用 EnumWindows 这个函数, 那么怎么得到所有活动窗口的 Handle 呢? 以往的方法可以通过结构,指针传递,那么在 Windows 里 EnumWindows 的参数是BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );
第一个参数是一个函数,当 EnumWindows 每找到一个窗口, 就调用这个函数,并传递这个窗口的 Handle 。 你试试看:BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam )
{
char WinName[100];
GetWindowText( hwnd, WinName, 100 );
AfxMessageBox( WinName );
return TRUE;
} 你的程序里写好上面这个回调, 然后调用
EnumWindows( EnumWindowsProc, 0 );