我不得不将自定义文件对话框(源自 MFC 的 CFileDialog)重写为 WTL 的 CFileDialog。当我无权访问对话框对象本身时,我在检索数据时遇到了一些问题。想象以下。
我班上有一个成员
static WNDPROC m_wndProc;
我在下面的静态成员 fnct 中初始化它。
void CMyFileDialog::OnInitDone(LPOFNOTIFY lpon)
{
m_wndProc = (WNDPROC)::SetWindowLong(thisHWND, GWL_WNDPROC, reinterpret_cast<long>
(&CMyFileDialog::WndProcSelect));
}
句柄进入回调方法没有问题,我可以用 CWindow “连接”到它
LRESULT CALLBACK CMyFileDialog::WndProcSelect(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// ...
CWindow callerWnd(hwnd);
}
在这里,我不知道将 CWindow 转换为我的 CMyFileDialog 的真正方法。我认为,这个 CWindow 类只是以某种方式连接到句柄本身,但与之前创建的对象不同。例如,如果我的 CMyFileDialog 中有一个 CString 或其他成员,它不会访问它的状态,因为它是在另一个对象中创建的。