subject_20218.htm
来自「一些关于vc的问答」· HTM 代码 · 共 54 行
HTM
54 行
<p>
序号:20218 发表者:淡淡 发表日期:2002-11-04 16:25:12
<br>主题:辅助线程中PostMessage()中第一个参数的问题
<br>内容:我建立的是一个单文档程序,想在辅助线程中的函数PostMessage()中,将消息发送到doc类(即,消息由doc类的一个消息处理成员函数处理),不知道该怎么写PostMessage的第一个HANDLE类型参数。只知道一个例程中用的是doc对应的视图的句柄。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:CDMA2000 回复日期:2002-11-04 16:29:34
<br>内容:你可以发给主窗口;<BR>主窗口句柄你可以用AfxGetMainWnd()->GetSafeHwnd()或<BR>AfxGetMainWnd()->m_hWnd;来获得<BR>可以以主窗口句柄为第一个HANDLE类型参数
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:CDMA2000 回复日期:2002-11-04 16:31:11
<br>内容:注意:消息只能说是发给某个窗口或某个线程,<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>
回复者:淡淡 回复日期:2002-11-04 16:57:10
<br>内容:是不是我发给主窗口后也可以用doc类的消息函数来处理?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐景周 回复日期:2002-11-04 17:05:53
<br>内容:类似下面方法,可以借鉴一下:<BR>IGridEditor& Editor = ((CMainFrame*)AfxGetMainWnd())->GetGridEditor();<BR> BOOL bModified = Editor.IsModified();<BR> bModified = bModified && Editor.IsVisible();<BR> if( bModified )<BR> {<BR> //AfxMessageBox(_T("柱子数据在表格编辑器中被改变,请按应用"));<BR> ::SendMessage( Editor.GetCtrlSafeHWnd(), WM_USER_SELECT_CHANGING, 0, 0 );<BR> }<BR><BR><BR>然后在你的DOC文档中编写WM_USER_SELECT_CHANGING消息响应涵数。<BR>#define WM_USER_SELECT_CHANGING WM_USER + 1106<BR> afx_msg void OnSelectedGraphListChanging( WPARAM, LPARAM ); <BR><BR>.cpp中<BR> ON_MESSAGE( WM_USER_SELECT_CHANGING, OnSelectedGraphListChanging )<BR><BR>void CGridCtrl::OnSelectedGraphListChanging( WPARAM wparam, LPARAM lparam )<BR>{<BR> ((CEditGridDlg*)GetParent())->Apply();<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>
回复者:CDMA2000 回复日期:2002-11-04 17:08:11
<br>内容:可以用doc类的消息函数来处理!因为主框架收到消息并不马上处理<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>
回复者:淡淡 回复日期:2002-11-04 17:36:52
<br>内容:我在doc里写的处理函数。<BR>那我怎么感觉那个自定义消息还是没有执行呢?<BR>有了多线程后,就不知道怎么debug了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sdf 回复日期:2002-11-05 15:00:48
<br>内容:有了辅助线程后,单步执行时,在debug下有一选项叫Thread,在哪个里面可以将线程在辅助线程和主线程之间切换,你试试就知道了,用PostMessage的第一个参数必须是窗口句柄(因为windows的标准消息只能在窗口中响应,而command消息在各个类中都能响应),你可以将窗口的句柄取到(先取到主窗口的指针,再取_hWnd或GetSafeHand都行,就可得到主窗口的句柄),建议你买一本侯俊杰的《深入浅出MFC》看看,水平一日千里,你在用串口通信吧,我刚用过,可以交流
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sdf 回复日期:2002-11-05 15:05:16
<br>内容:另外,你的消息在哪个窗口里响应,则函数就在那个窗口里,不要在Doc写函数。
<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 + =
减小字号Ctrl + -
显示快捷键?