关于CFileDialog中CComboBox的路径修改问题
总的目的是捕获所有调用CFileDialog的操作,返回一个非当前目录下的文件。如:现在CComboBox控件指向c:\目录,而点OK后,我想返回d:\test.txt文件。经过跟踪发现必须修改CComboBox让其进入d:\才能正确返回。单纯修改CFileDialog的m_ofn成员的值是不行的。
这个项目我是用Hook实现的,现在已经得到了CComboBox的句柄,并能进行一般的操作,如GetCBText,SetCurSel等操作,但一InsertString,调用CFileDialog的进程就整个当掉了。不知道why?
下面是我得到的一些相关信息:
CComboBox的style是 CBS_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED
spy++跟踪发现,切换目录时CComboBox在 CB_INSERTSTRING 后紧接着 CB_SETITEMDATA 消息,而且每次lParam的值都不一样,不知道它的data有什么具体意义,是否和CBS_HASSTRINGS style有关