当用户按下按钮时,我试图在Windows机器(使用Windows凭据提供程序(中打开对话框。 我尝试了下面的代码,但是对话框没有打开。 我有一个资源"IDD_DIALOG1"和回调方法"ChangePasswordProc"。
HWND hwndOwner = nullptr;
::D ialogBox(HINST_THISDLL, MAKEINTRESOURCE(IDD_DIALOG1(, hwndOwner,ChangePasswordProc(;
一段时间没有用Windows GUI编写了,但也许可以尝试这样的事情:
HWND dialog = ::DialogBox(HINST_THISDLL, MAKEINTRESOURCE(IDD_DIALOG1), hwndOwner,ChangePasswordProc);
ShowWindow(dialog, SW_SHOW);
我记得,创建窗口并不意味着显示它 - 它必须明确完成。
要从Credential Provider
内部创建任何窗口,您必须首先通过调用ICredentialProviderCredentialEvents
接口的方法获取父窗口句柄OnCreatingWindow
。
HRESULT OnCreatingWindow([out] HWND* phwndOwner);
指向此接口的指针通过调用其ICredentialProviderCredential
接口Advise
方法提供给提供程序:
HRESULT Advise([in] ICredentialProviderCredentialEvents* pcpce);
看看这篇文章。