——++理想如果不向实际做点妥协,理想就会归于尘土。面向对象怎能把一切传统都抛开。
- Callback 函数
void WINAPI LineDDA(int,int,int,int,LINEDDAPROC,LPARAM); 这个函数做动画十分方便。y
以类的成员函数做为 Windows callback 函数
Callback—— 凡是由你设计而却由Windows系统调用的函数,统统成文Callback 函数,这些函数都有一定的类型,以配合Windows的调用操作。某些windows API 函数要求以Callback 函数作为其参数之一,比如:SetTimer、LineDDA、EnumObjects。通常这种API 会在进行某种行为之后或满足某种状态之时调用该Callback函数。要把某个函数用作callback 函数,就必须告诉C++ 编译器,不要让this 指针作为该函数的最后一个参数,采用以下两个方法可以做到这一点。
- 不要使用类的成员函数,也就是说,要使用全局函数作为callback函数。
- 使用static 修饰成员函数。(static修饰的成员函数还是成员变量,不属于对象,没有this指针。)
- 空闲时间(idle time)的处理:OnIdle
- Dialog与Control
- 通用对话框(common Dialogs)
下面这段代码可以激活【Open】对话框并最后获得文件完整路径:
char szFileters[]="Text files (*.txt)|*.txt|All files (*.*)|*.*||";
CFileDialog opendlg(TRUE,"txt","*.txt",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFileters,this);
if(opendlg.DoMoDal()==IDOK){
filename = opendlg.GetPathName();
}
当DoModal反回,我们可以利用CFileDialog的成员函数GetPathName取得完整的文件路径,也可以使用另一个成员函数GetFileName取其不含路径的文件名称,或GetFileTitle 取得既不含路径亦不含扩展名的文件名称。 - 本章回顾.......