如何得到指定ID模态对话框的窗口句柄

想向模态对话框中发送消息,可是得不到此模态对话框的句柄,造成模态对话框接收不到发送过来的消息?(Findwindow不行(HWND)(GetMainWnd()->GetSafeHwnd())也不行,)如何解决……………

模态对话框有自己有消息循环,一旦对话框出现,就会阻塞到对话框的消息循环中。你的目标“想向模态对话框中发送消息”好象无法实现。除非自己给自己发。
你可以换非模态对话框。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-02-19
对话框自身拥有一个m_hwnd成员变量,保存了与之相关的句柄。直接调用此成员即可。追问

::SendMessage((::AfxGetMainWnd()->m_hWnd),WM_DISPLAY,nTmpt,NULL);
还是不行啊

本回答被提问者采纳

CDialog成员函数如何根据模板创建和初始化对话框?
非模态对话框则先构造,再通过Create创建对话框。Create函数用于创建非模态对话框,有两参数形式,分别接收模板字符串或ID,以及父窗口指针。成功创建返回非零值,否则为0。CreateIndirect接受对话框模板的指针或全局内存句柄,并同样传递父窗口,用于内存中创建对话框。DoModal函数是模态对话框的核心,处理用户...

如何用回调函数SendMessageCallback获取窗体句柄?
如果线程使用非模态对话框,消息循环必须包括 IsDialogMessage 以使非模态对话框获得键盘输入。Window Procedure窗口过程是一个用于处理所有发送到这个窗口的消息的函数。任何一个窗口类都有一个窗口过程。同一个类的窗口使用同样的窗口过程来响应消息。系统发送消息给窗口过程将消息数据作为参数传递给他,窗口过程使用参数产...

DialogBoxParam有什么用
lpTemplateName,资源字符串,也就是你设计的对话框资源,注意ID的话要使用MAKEINTRESOURCE(ID);hWndParent;父窗口句柄 lpDialogFunc;对话框窗口的窗口消息处理函数,这个很重要,既然要用此API,你的消息处理都只能放在这里面,所有的事件都在这里面响应处理,如果指定了dwInitParam的值,这里就当然要处理WM...

MFC中模态对话框和非模态对话框的区别?
模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。二者的类都派生于CDialog类,而CDialog类派生于CWnd类。区别:模态对话框使用CDia...

MFC中,模态和非模态对话框的关闭问题
贴出窗口1中,窗口2的创建部分的代码。一般可能是窗口2创建的时候,没有明确父窗口关系或者错误的父窗口造成的,这里要将窗口1的句柄作为父窗口。另外,这个问题确实比较古怪,模态关系是很难破坏的,应该是哪个地方做了错误的逻辑处理或者窗口操作,这个不好说一定是哪里的问题。

vc 怎样在一个模态对话框中关闭其它几个模态对话框?
FindWindow(_T("CCreatproject"),_T("新建项目"));"窗口类"不是你的C++类名, 是窗口的类型名,对话框的话好像是"dialog",或者你用spy++抓一下,就知道了.

什么叫模态和非模态 举例说明
模态对话框:使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须主动结束该对话框,这藉由通过按一下「OK」或者「Cancel」键来完成。通常可以从目前的程序切换到另一个程序。而有些对话框(称为「系统模态」)甚至连这样的切换程序操作也不允许。模态对话框和非模态对话框的区别:...

InitModalIndirect词条简介
第二个版本是:BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);这个函数接受一个全局内存句柄,该句柄指向包含对话框模板的 DLGTEMPLATE 结构。同样,pParentWnd 参数可指定对话框的父窗口,如果为空,则使用主应用程序窗口作为默认父窗口。要创建和初始化模态对话框的间接方式...

非模态对话框Findwindow
想要得到这个非模态对话框的指针,这样用吧:CTestDlg *pDlg;pDlg = (CTestDlg *)this->FindWindow(NULL,"Dialog");使用MFC时尽量使用MFC封装的类,不要用API函数了。回复补充:GetWindow返回与指定窗口有特定亲缘关系(如Z序或所有者)的窗口句柄,包括父窗口。假设当你有pDlg1、pDlg2、pDlg3三个子...

C# Message结构中的Msg,具体的ID代表了什么?
WM_GETTEXTLENGTH = $000E;得到与一个窗口有关的文本的长度(不包含空字符)WM_PAINT = $000F;要求一个窗口重画自己WM_CLOSE = $0010;当一个窗口或应用程序要关闭时发送一个信号WM_QUERYENDSESSION = $0011;当用户选择结束对话框或程序自己调用ExitWindows函数WM_QUIT = $0012;用来结束程序运行或当程序调用...

相似回答
大家正在搜