- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 Microsoft 文档中找不到任何内容,所以我想知道是否有人知道,是否可以指定 IFileDialog
的起始位置?具体来说,我希望第一次打开对话框时,它会在父窗口的中央打开。
除了以某种方式挂接到底层 WM_*
消息之外,我没有看到一种直接的方法来执行此操作。
是否可以使用类似 SetWindowPos
的东西?
最佳答案
shell 的 IFileDialog 实现支持 IOleWindow接口(interface)(注意它似乎没有被记录......)。但是必须先打开对话框才能获取其窗口句柄。
所以诀窍是使用 IFileDialogEvents 订阅对话框的事件界面,获取窗口句柄,然后移动它,如下例所示。我选择 OnSelectionChange 因为它似乎是个好地方。当然这是要适应的(您不想在每次选择更改时移动窗口...)。
class Events : public IFileDialogEvents
{
// poor man's IUnknown implementation :-)
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { *ppvObject = NULL; return E_NOINTERFACE; }
STDMETHODIMP_(ULONG) AddRef() { return 1; };
STDMETHODIMP_(ULONG) Release() { return 1; }
STDMETHODIMP OnFileOk(IFileDialog *pfd) { return S_OK; }
STDMETHODIMP OnFolderChanging(IFileDialog *pfd, IShellItem *psiFolder) { return S_OK; }
STDMETHODIMP OnShareViolation(IFileDialog *pfd, IShellItem *psi, FDE_SHAREVIOLATION_RESPONSE *pResponse) { return S_OK; }
STDMETHODIMP OnTypeChange(IFileDialog *pfd) { return S_OK; }
STDMETHODIMP OnOverwrite(IFileDialog *pfd, IShellItem *psi, FDE_OVERWRITE_RESPONSE *pResponse) { return S_OK; }
STDMETHODIMP OnFolderChange(IFileDialog *pfd) { return S_OK; }
STDMETHODIMP OnSelectionChange(IFileDialog *pfd) {
IOleWindow *window;
if (SUCCEEDED(pfd->QueryInterface(&window)))
{
HWND hwnd;
if (SUCCEEDED(window->GetWindow(&hwnd)))
{
MoveWindow(hwnd, 0, 0, 600, 600, FALSE);
}
window->Release();
}
return S_OK;
}
};
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
CoInitialize(NULL);
IFileOpenDialog *dlg;
if (SUCCEEDED(CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, IID_PPV_ARGS(&dlg))))
{
DWORD cookie;
Events *evts = new Events();
dlg->Advise(evts, &cookie);
dlg->Show(NULL);
dlg->Unadvise(cookie);
dlg->Release();
delete evts;
}
CoUninitialize();
}
关于windows - 可以指定 IFileDialog 的起始位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13476169/
我在尝试生成具有“价格”轴和“量”轴的图表时遇到问题,类似于 example given 中的图表。在 Highstock 网站上。它可以很好地显示成交量轴,但不能显示价格。 在尝试确定问题的原因时,
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
The allocation function attempts to allocate the requested amount of storage. If it is successful, i
这是我的Program.cs: public static void Main(string[] args) { var host = new WebHostBuilder()
我希望我的应用程序独立于操作系统。因此,我的 config.properties 和日志文件存储在资源文件夹中,我通过相对路径获取这些资源。这是我的项目结构。 这是我的 AppConfig 类: pu
(前言:这是我在 Stack Overflow 上提出的第一个与音频相关的问题,因此我会尽力用最好的措辞来表达。欢迎编辑。) 我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型(proto
我有一个 Pandas DataFrame,我想将其用作 Scrapy Start URL,函数 get_links 打开一个到 DataFrame 的 xlsx,其中有一个我想在其上运行蜘蛛的 Co
我有几个大的 DTD 文件。我用过 trang将它们转换为 XSD 文件,这样我就可以轻松地从 JAXB 和其他实用程序中使用它。但是,生成的 XSD 文件的所有声明元素都位于顶层。这意味着任何元素都
是否有任何工具可以将文件从给定的起始偏移量复制到给定的(结束)偏移量。我还想通过运行 md5sum 确认该工具已正确复制指定的字节。像这样的东西 1) Copy source file star
所以,我有一个程序,我可以使用 Path2D 对象将形状添加到 JPanel,然后我可以单击并拖动它们。我想要做的是能够找到药物后形状的最终 X 和 Y 坐标。坐标必须是左上角坐标。有什么想法吗? /
我是一名优秀的程序员,十分优秀!