Windows通用对话框与COMMDLG.DLL

Author: 北京 叶文彪 何樱樱 Date: 1996-06-07

        这是怎么回事呢?
        原来,在Windows3.1版后,Windows系统新增了一个COMMDLG.DLL文件(在WINDOWS\SYSTEM目录下),它是通用对话框的动态链接库。动态链接库(区别于静态链接库)是可执行的WINDOWS模块。在COMMDLG.DLL中包容了许多Windows应用程序常用的对话框,如打开文件、保存文件、设置颜色、设置字体、打印等。许多Windows应用程序本身并不包含这些对话框,只是在执行过程中,调用加载COMMDLG.DLL,在需要时把它链接,然后从内存中删除,直到再一次需要它。这样做提高了内存的使用效率,减少了可执行文件的代码长度,同时也使得这些常用对话框得到统一和标准化,不仅利于程序员编程,也便于用户学习使用。
        随Windows语言版本的不同,COMMDLG.DLL也有不同语言的版本。我们常见的COMMDLG.DLL有英文版和中文版,它们的差别只是在人机界面上的文字提示上,一个是英文,一个是中文。但中文Windows可以调用英文版的COMMDLG.DLL,英文Windows也可以调用中文版的COMMDLG.DLL,尽管在没有中文系统支持下,后一种情况的对话框会显示一堆乱码,但照样能用。前面我们遇到的问题,就是某些英文软件在安装时,用它们所带的英文版COMMDLG.DLL覆盖了原来中文版COMMDLG.DLL。解决办法也就是用中文版的COMMDLG.DLL再去覆盖掉英文版的COMMDLG.DLL。可用以下方法中的任一种:
        1.从别处拷贝一份中文版COMMDLG.DLL(中文Windows3.1或3.2版均可)覆盖英文版COMMDLG.DLL。
        2.把中文Windows系统盘中的压缩文件COMMDLG.DL-用EXPAND.EXE(在WINDOWS目录下)解压并覆盖英文版COMMDLG.DLL。假设COMMDLG.DL-在A盘根目录,Windows在C:\WINDOWS,则可用命令:
        C:\WINDOWS\EXPAND A:\COMMDLG.DL- C:\WINDOWS\SYSTEM\COMMDLG.DLL
        最后提醒您,最好是把COMMDLG.DLL备份一份,有备无患。