当我在 NPP 中打开文件时,文件类型默认为“所有类型(。)”。
我怎样才能将其默认设置为“.txt”?
这可能是 Windows 的问题,因为我确信它只是使用默认的 Windows 文件打开对话框,但其他程序(textpad、notepad)能够将其设置为默认。
答案1
我刚刚完成了 NPP 源代码的审查,如果您想自己寻找解决方案,我还有一些其他详细信息。当您转到“文件”->“打开”时,文件扩展名列表将从 Scintilla (SciLexer.dll) 文件中加载。
现在,当您转到文件 -> 打开时,void Notepad_plus::fileOpen()
将调用该函数(在NppIO.cpp
文件中)。首先,All Types, *.*
将过滤器添加到过滤器列表中,然后int Notepad_plus::setFileOpenSaveDlgFilters(FileDialog & fDlg, int langType)
调用该函数(在同一文件中)。此函数将遍历我上面提到的 Scintilla 条目,并将它们添加到传递的FileDialog
过滤器列表中。代码如下FileOpen
所示:
fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
您可以更改默认过滤器索引。为此,您可以将这些行更改为以下内容:
fDlg._ofn.nFilterIndex = 2L;
fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
这应该默认将过滤器索引设置为第二个。
另一种快速修复此问题的简单方法是修改这些行(再次,在NppIO.cpp
)使其看起来像这样:
fDlg.setExtFilter(TEXT("Text files"), TEXT(".txt"),
TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
这将确保文本文件是列表中的第一个过滤器。请注意,这将导致 .txt 扩展名在条目中被双重定义,但如果您可以接受这个警告,这应该可以正常工作。
答案2
对于程序员来说,编写代码当然是可能的,但是一旦设置好了就无法改变它了。很抱歉。
答案3
默认情况下,您无法以正常方式更改该“功能”。
一种解决方案是更改程序二进制文件,进行一些代码更改(如果代码是开放的并且您有这样做的许可),然后重新编译它以生成不同的程序二进制文件,或者使用十六进制编辑器或已创建的补丁更改一些文件来“破解”二进制文件。另一种解决方案是以某种方式更改默认的 Windows 文件对话框。
你可以试试那个软件,应该使用第二种解决方案:文件扩展
有了它,您可以添加一些功能来打开和保存对话框并记住所选的过滤器。尝试一下,如果它对您有用,请发布。