如题!
解决方案 »
- 急!怎么在 DialogBox()中建立的对话框消息函数中处理WM_KEYDOWN
- 哪里有学习钩子函数的好例子,能勾住指定程序统计网络流量吗?谢999辈子
- 问个重载函数优先级的问题
- 如何在程序中检测某个Windows Patch是否安装?
- 怎样读取CComboBox中所选的数据项
- 百分求救,如何上到comp.lang.c++和complanf.c++.medorated comp.std.c++
- 紧急求助!在线等待!我将硬盘换到另外一个机子上为什么不行?
- WSAEWOULDBLOCK的问题
- c++在VC++下编译是否可以使用类库?
- 新版的博客,没有任何亮点可言....
- VC SQL数据库转成ACCESS数据库的问题
- WaitForSingleObject 在Vista home premium系统上无法返回。
{
CFileDialog fd(TRUE);
fd.m_pOFN->Flags |= (OFN_ENABLEHOOK | OFN_EXPLORER);
fd.m_pOFN->Flags |= OFN_EXPLORER;
fd.m_pOFN->lpfnHook = OFNHookProc;
fd.DoModal(); }
static UINT_PTR CALLBACK OFNHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
const int ID_TMR_CLOSE = WM_USER + 100;
switch (uiMsg)
{
case WM_INITDIALOG:
SetTimer(hdlg,ID_TMR_CLOSE,1000,NULL);
break;
case WM_TIMER:
if (wParam == ID_TMR_CLOSE)
PostMessage(GetParent(hdlg),WM_COMMAND,MAKELONG(IDCANCEL,0),1); break;
}
return 0;
}
{
ASSERT_VALID(this);
ASSERT(m_ofn.Flags & OFN_ENABLEHOOK);
ASSERT(m_ofn.lpfnHook != NULL); // can still be a user hook …… if (nResult)
ASSERT(pThreadState->m_pAlternateWndInit == NULL);
pThreadState->m_pAlternateWndInit = NULL; …… PostModal();
return nResult ? nResult : IDCANCEL;
}还请各位高手指点一下,谢谢!
{
enum { ID_TMR_CLOSE = 100 };
public:
CCustomFileDialog(BOOL bOpen = TRUE)
: CFileDialog(bOpen) {};
DECLARE_MESSAGE_MAP()
afx_msg void OnTimer(UINT nIDEvent); virtual BOOL OnInitDialog()
{
SetTimer(ID_TMR_CLOSE,5000,NULL);
return CFileDialog::OnInitDialog();
}
};
BEGIN_MESSAGE_MAP(CCustomFileDialog, CFileDialog)
ON_WM_TIMER()
END_MESSAGE_MAP()void CCustomFileDialog::OnTimer(UINT nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (nIDEvent == ID_TMR_CLOSE)
{
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDCANCEL,0),NULL);
}
}void Test()
{
CCustomFileDialog fd;
if (fd.DoModal() == IDCANCEL)
AfxMessageBox("Exit");
else
AfxMessageBox(fd.GetFileName());}