📄 subject_63801.htm
字号:
<p>
序号:63801 发表者:gws 发表日期:2003-12-06 11:08:43
<br>主题:在基于对话框的应用程序中使用SENDMESSAGE的问题
<br>内容:我想在主对话框中单击一按钮开始一自定义的线程(用于联接服务器,发送登录消息),同时在登录的过程中给用户提示进度,该怎么实现啊?<BR>如何在线程中发送自定义消息到指定的窗口(如何得到指定窗口的hWnd?),在对话框应用程序中?<BR><BR>我在单击按钮事件中开始线程并同时创建一对话框(用户显示提示信息),然后在线程中用sendmessage()发送自定义消息到提示对话框,但是提示对话框不能响应消息!而在主对话框中发送消息可以响应!<BR>线程中:HWND hWnd;<BR> hWnd=FindWindowEx(NULL,NULL,"CLogin","登录过程指示");(hWnd为空,请问如何得到这个窗口的hWnd?)<BR> ::SendMessage(hWnd,WM_THREAD0,0,0);<BR> //AfxMessageBox("消息已发送!");
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:BigJames 回复日期:2003-12-06 11:48:45
<br>内容:在主对话框中添加一个函数<BR>CMainDlg::StartThread(HWND hwndLoginDlg)<BR>{<BR>//启动线程,并且把hwndLoginDlg传给他<BR>}<BR><BR>在CloginDlg中<BR>CLoginDlg::OnInitDialog()<BR>{<BR>HWND hwndSelf = GetSafeHwnd();<BR>CMainDlg* pParent = (CMainDlg*)GetParent();<BR>pParent->StartThread(hWndSelf);<BR>}<BR><BR>在你的那个按钮中,不要先启动先程,只启动LogDlg,让LoginDlg的OnInitDialog反过来调用CMainDlg的StartThread启动线程。<BR>CMainDlg::OnButton1()<BR>{<BR>CLoginDlg dlgLogin();<BR>dlgLogin.DoModal();<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gws 回复日期:2003-12-10 20:20:39
<br>内容:谢谢,我想在基于对话框的程序中使用多线程,主对话框中开一个接受网络信息线程,判断是发给程序中的某个对话框的信息,然后发送消息到指定的对话框进行处理,并在指定对话框内调用sock发送函数发送回复信息。<BR>问题一、是同一个全局socket,是否可行?在各个全局socket之间是否可以在一个接受线程中用另一个发送数据?<BR>问题二、自定义消息如何发送?默认是发给主对话框,是否可以在主对话框中传递消息到子对话框?<BR>希望各位发表自己的意见,谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-12-11 09:31:49
<br>内容:[1]从你的描述里推测,由于一个tcp连接代表一次登陆,所以你的程序只能有1个连接;只有一个连接的话,也就没有必要采取多个线程;<BR>只需要一个线程负责接收和发送就行了。例如在主对话框中启动一个线程,所有的通讯都通过主对话框中转。可以使用自定义消息;也可以使用函数调用。<BR>[2]自定义消息参见msdn中的ON_MESSAGE;消息的发送对象可以自己控制;就你的程序而言,也许采用函数调用比较直接。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gws 回复日期:2003-12-12 21:04:26
<br>内容:多谢<BR>接受消息可以通过中转,发送信息是否可以直接调用send(在另一个对话框中)呢?<BR>具体情况是有多个对话框共用一个套接子,“消息的发送对象可以自己控制;”消息如何发到子对话框?请指点一二<BR>对话框中的属性POPUP和CHILD有什么区别?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-12-12 21:42:51
<br>内容:对话框中的属性POPUP和CHILD有什么区别?<BR>POPUP用于模式对话框,child用于非模式对话框<BR><BR>只要你能够得到目标对话框的句柄,就可以使用sendmessage或者postmessage了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -