個人的に作成したダイアログベースのツールで,lnk をドロップした時に開けない.
これに対応するには,lnk から doc を求めることで対応できる.
同じ様に作成した SDI exe の場合は,うまく開ける?
デバッガで追いかけると,CDocManager::OpenDocumentFile で AfxResolveShortcut を呼んでいる.
但し,MFC のバージョンにより? ::CoInitialize が呼び出されていないと 1 回だけ.
CFileDialog などを呼出すと ::CoInitialize にあたるものが呼び出されるのでその後はうまくいく.
https://dev.mish.work/wordpress/2021/03/31/win10-21h1-mdi-exe-error/
次の様な関数を用意して,ドロップされたファイルが lnk の時に対応.
tstring LNK_Get_path (HWND hwnd,LPCTSTR lnk_path)
{
tstring doc_path = lnk_path ;
if (::Path_GetExtLow(lnk_path) == _T("lnk")) {
doc_path = ::Get_path_lnk(hwnd,lnk_path) ;
}
return doc_path ;
}
[…] デバッガで追いかけると,AfxResolveShortcut でエラーになっている. […]