(多次点击只弹出一个对话框)怎样获得对话框的指针 或句柄 并把焦点定位到对话框上

来源:互联网 发布:淘宝怎么用别人的图片 编辑:程序博客网 时间:2024/04/30 22:44
你的对话框是在View中打开吗,如果是,打开它时就会知道它的指针的。 可以将这个指针声明为View类的成员变量,这样就行了。如果是在其他地方打开的,也可以把这个指针传递给View使用。 如果对话框不是同一个程序里的,可以用FindWindow来获得。补充:菜单打开对话框,那你的对话框应该是模式对话框了,关闭以后也就没有了。所以就没有办法再获得它的指针了,你是不是想获得对话框里输入的参数啊。可以在DoModal()之后,马上通过刚才声明的对话框变量来获得,然后在传递给View类。
 
HWND SetFocus(HWND hWnd)。  获得了句柄的;
GetDlgItem(IDC_EDIT1)->SetFocus();   通过对话框指针获得;
 
或者通过CHotkeyScheme* Dlg;来完成!
变量的取名问题!
 
方案一:(1)

bool m_MarkHotkeysDialog=false;

SSN_RETURN ShowDialog(__in PSSN_CMD_CALL_DATA pCallData){ if(m_MarkHotkeysDialog==false) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); //CHotkeyScheme* Dlg; CHotkeyScheme Dlg; m_MarkHotkeysDialog=TRUE; Dlg.DoModal(); } else { TCHAR CDialogName[MAX_PATH]={0}; CString Hdvalue=_T("Hotkeys"); SsnGetLocaleString(SSN_PLUGIN_ID_ANY,Hdvalue, SSN_AUTO_SELECT_LOCALE,NULL,Hdvalue,CDialogName,MAX_PATH,Hdvalue); SetFocus(FindWindow(NULL, CDialogName)); } return SSN_OK;}

方案二:(2)

CHotkeyScheme* Dlg;

SSN_RETURN ShowDialog(__in PSSN_CMD_CALL_DATA pCallData){ if(Dlg==NULL) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Dlg=new CHotkeyScheme(); Dlg->DoModal(); } else { Dlg->SetFocus(); } return SSN_OK;}

果是类里的函数:

只需:

CHotkeyScheme Dlg;

Dlg.DoModal(this);

即可!