固定Windows

【勇芳软件工作室】汉化HomePreviousNext

外壳可以请求快速查看在与上一个文件查看器使用的窗口相同的窗口中显示一个新文件;也就是说,Quick View可以“固定”一个查看器窗口。快速查看通过向文件查看器发送WM_DROPFILES消息来传达shell的请求。该消息包含内部删除文件结构,其成员包括要显示的新文件的路径。文件查看器使用相同的代码来处理“固定”状态和拖放操作,其中文件查看器显示用户在文件查看器的窗口上拖放的文件。

快速查看实现IFileViewerSite界面,允许文件查看器检索当前固定窗口的句柄(如果有)或设置新的固定窗口。当Quick View调用文件查看器的IFileViewer::ShowInitialize成员函数时,文件查看器会收到Quick View的IFileViewerSite界面的地址。如果文件查看器保存接口的地址,则应调用IFileViewerSite::AddRef成员函数来增加引用计数。

一次只能存在一个固定的窗口。文件查看器使用IFileViewerSite::SetPinnedWindow接口设置新的固定窗口和IFileViewerSite::GetPinnedWindow接口来检索当前固定窗口的句柄。

当Quick View调用文件查看器的IFileViewer::Show成员函数时,文件查看器将收到包含可选RECT结构的FVSHOWINFO结构的地址。一个有效的RECT结构是shell提示文件查看器窗口应该被固定;文件查看器应根据结构中的信息设置其窗口的大小和位置。

如果文件查看器窗口接收到WM_DROPFILES消息,则应填写FVSHOWINFO结构的strNewFile成员,并显示要显示的新文件的路径,填写矩形成员的大小和位置查看器窗口,并在dwFlags中成员中设置适当的值。文件查看器还应填写punkrel成员,其中包含新文件查看器应该调用以释放之前的文件查看器的接口的地址。这样做可以让以前的文件查看器执行清理操作。如果当前文件查看器支持新文件,则新文件查看器可能与当前文件查看器相同。如果旧文件查看器与新文件查看器相同,则释放不会执行任何操作,因为引用计数大于零。

如果文件查看器返回一个文件,但Quick View找不到新文件的查看器,则会调用具有FVSIF_NEWFAILED值的旧文件查看器的IFileViewer::Show成员函数。文件查看器可以终止或继续显示上一个文件。