论坛风格切换切换到宽版
  • 5307阅读
  • 6回复

请问VC软件引用的“打开”对话框控件名称? [复制链接]

上一主题 下一主题
离线kevinchan
 

发帖
163
金钱
50
威望
5
只看楼主 倒序阅读 0 发表于: 2011-01-26
有个英文软件,里面有个“导入名称(Import Names)”按钮,点击后会打开“打开”对话框,这个打开对话框是中文的(我的OS是繁体中文的),选择的文件类型只有文本文件(Text files(*.txt)),因此这个对话框应该是调用了系统的某个控件,请问大家知道不知道这个控件的名字?(这个软件是VC类的)
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2011-01-26
GetOpenFileName
离线kevinchan

发帖
163
金钱
50
威望
5
只看该作者 2 发表于: 2011-01-26
多谢楼上!
我找到了windows/system32下的Comdlg32.dll,应该就是楼上说的GetOpenFileName 对应的dll,
可是为什么我用UE在其中搜索不到Text file(*.txt)字符串呢?
离线stsm
发帖
*
金钱
*
威望
*
只看该作者 3 发表于: 2011-01-26
OPENFILENAME ofn;

szBuffer = (TCHAR *) malloc(MAX_BUFFER_SIZE_OFN * sizeof(TCHAR));

    if(szBuffer == NULL){
        MessageBox(hWnd, TEXT("申请内存失败"), TEXT("内存申请出错"), MB_OK);
        return FALSE;
    }

    *szBuffer = 0;
    
    ZeroMemory(& ofn, sizeof (OPENFILENAME));
    ofn.lStructSize       = sizeof (OPENFILENAME) ;
    ofn.hwndOwner         = hWnd ;
    ofn.lpstrFilter       = TEXT("所有文件\0*.*\0\0") ;
    ofn.lpstrFile         = szBuffer ;
    ofn.nMaxFile          = MAX_BUFFER_SIZE_OFN ;
    ofn.Flags             = OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_ENABLESIZING;

    if(!GetOpenFileName( & ofn )){
        if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL){
            MessageBox(hWnd, TEXT("选择的文件太多. 缓冲区无法装下所有文件的文件名"),
                        TEXT("缓冲区不够"), MB_OK);
        }
        free(szBuffer);
        return FALSE;
    }

那个Text file(*.txt)字符串就在红色的那设置。。。。

离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 4 发表于: 2011-01-27
引用第2楼kevinchan于2011-01-26 20:53发表的  :多谢楼上!我找到了windows/system32下的Comdlg32.dll,应该就是楼上说的GetOpenFileName 对应的dll,可是为什么我用UE在其中搜索不到Text file(*.txt)字符串呢?

这个 Text file(*.txt) 是调用时传递过去的参数,也就是说它是你自己程序里面的内容,要在你的程序里面查找。这个通常是非标准资源,汉化时要保持字串与原来的长度一致,也就是说不足的部分要用空格补齐。
离线kevinchan

发帖
163
金钱
50
威望
5
只看该作者 5 发表于: 2011-01-27
谢谢Tiger!
我用UE把程序里面的所有Text file(*.txt)都汉化了,软件打开后竟然还是英文。于是又把软件安装目录下所有带有Text file(*.txt)的exe、dll等全汉化了,还是没有变化,没辙了!
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 6 发表于: 2011-01-27
标准资源里面检查了吗?
UNICODE 非标准资源检查了吗?