我已经成功地将 a 子类化CFileDialog
并添加了一个带有一些控件的区域,这些控件使用SetTemplate()
. 我的控制消息处理程序被正确调用。
根据键入的文件名,我的控件可能需要更新。OnFileNameChange()
单击文件列表以及OnTypeChange()
更改文件类型组合框时,我会得到。
但是,当简单地输入文件名时,我怎样才能得到通知?
我已经尝试将 a 添加PreTranslateMessage()
到这个CFileDialog
子类,但它没有被调用任何东西。我知道如何检查pMsg->message == WM_KEYDOWN
,但如果我检测到一个,我怎么知道它是在文件输入字段中按下的键?而且由于钥匙还没有得到控制GetEditBoxText()
,所以GetFileName()
等。将无法工作......
我还尝试将以下内容添加到我的构造函数中:
OPENFILENAME& ofn = GetOFN();
ofn.lpfnHook = &OFNHook;
具有以下功能:
UINT_PTR CALLBACK OFNHook( HWND hdlg, UINT uiMsg,
WPARAM wParam, LPARAM lParam ) {
if ( uiMsg == WM_KEYDOWN )
MyLogging( "here" );
return 0;
}
OFNHook()
被叫了很多,但uiMsg
从来没有被平等过WM_KEYDOWN
。所以与以前相同的问题:我如何知道文件字段的密钥,应用密钥后如何获取该文件字段的值等。