假如在一个另存为对话框中有多个文件过滤器,如何获取用户选择的文件过滤器呢?
比如我现在有这样一个“另存为”的CFileDialog,代码大致如下:
CFileDialog dlg(false, "bmp", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "BMP FILE(*.bmp)|*.bmp|JPG FIlE(*.jpg)|*.jpg||");
if(IDOK=dlg.Domodal())
{
// 在这里假如用户在下拉列表选择了BMP FILE(*.bmp).,就获取BMP FILE(*.bmp),假如用户选择了JPG FIlE(*.jpg)|*,
// 就获取JPG FIlE(*.jpg)|*,
}
我使用dlg的GetOFN函数获取OPENFILENAME结构体的信息,但是里面的成员变量LPCTSTR lpstrFilter保存的只是“BMP FILE(*.bmp)”.如何获取JPG FIlE(*.jpg)呢?
一个笨办法是,使用
switch(dlg.m_ofn.nFilterIndex)
{
case 1:
// BMP FILE(*.bmp)
case 2:
// JPG FIlE(*.jpg)
根据dlg.m_ofn.nFilterIndex的值对"BMP FILE(*.bmp)|*.bmp|JPG FIlE(*.jpg)|*.jpg||"进行分割获取。
不知有没有更好的办法?
我的编译环境是:VS 2005+sp1.