⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_23042.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:23042 发表者:无非 发表日期:2002-11-30 21:37:19
<br>主题:关于HotKey的问题
<br>内容:1。WM_SETHOTKEY,MSDN说按热键后,能激活目标窗口。我没实验成功。<BR>如果,我想自己处理这个热键消息,应该拦截WM_SYSCOMMAND,可在SDI程序中,MAINFRAME,DOC,VIEW类中都找不到WM_SYSCOMMAND(CLASS WIZARD中)。<BR><BR>2。RegisterHotKey()是设置热键的另一种办法。当热键按下时,系统象目标窗口发WM_HOTKEY,同样,在CLASSWIZARD中也找不到WM_HOTKEY.<BR><BR>3。对话框中控制的生命。<BR>int iRet=dlg.DoModal();<BR>if(IDOK==iRet) dlg.m_HotKeyCtrl.GetHotKey();//这句非法,m_HotKeyCtrl是对话框中的一个CONTROL。<BR>if(IDCANCLE==iRet) DWORD dw_MyHotKey=dlg.m_dwHotKey;//这句又不非法。m_dwHotKey是对话框类的一个DWORD成员变量。<BR>疑惑,在对话框结束后还能访问,而控制不可以?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-11-30 22:21:39
<br>内容:1, 嘿嘿,hotkey 俺没用过,但是俺知道不能全部依赖wizard替你做好<BR>&nbsp;&nbsp; 你应该可以自己加msg map的,不过似乎,你应该可以在msdn里找到sample的,<BR>&nbsp;&nbsp; 不要告诉我,让我替你找 :D.<BR>2, 同上<BR>3,打你PP啦,DoModal()之后,dialog已经没了,它的孩子也没了<BR>&nbsp;&nbsp; 你上哪找他的control ? 此时,c++对象还没有被destruct,所以<BR>&nbsp;&nbsp; 你依然可以访问c++ object, BUT NOT windows object.<BR>&nbsp;&nbsp; 记住,份清楚c++ object 和 windows object 的区别.
<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-30 22:27:50
<br>内容:呵呵,第三个问题,我自己知道那么写肯定非法。但m_HotKeyCtrl也是C++ 对象啊。CHotKeyCtrl m_hotKeyCtrl;是这样搞出来的哦。难道光剩个C++的外包装?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-11-30 22:33:04
<br>内容:void CHotKeyCtrl::GetHotKey(WORD &amp;wVirtualKeyCode, WORD &amp;wModifiers) const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(::IsWindow(m_hWnd)); // Assert is triggered! comment by dr0<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD dw = ::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L);<BR>&nbsp;&nbsp;&nbsp;&nbsp;wVirtualKeyCode = LOBYTE(LOWORD(dw));<BR>&nbsp;&nbsp;&nbsp;&nbsp;wModifiers = HIBYTE(LOWORD(dw));<BR>}<BR><BR>MFC 的Source, 看看吧。此时, m_hWnd == 0.
<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-30 22:36:07
<br>内容:呵呵,我DEBUG时看过了。<BR><BR>现在已经清醒了。THX<BR><BR>那我对话框结束,我要取 HotKeyCtrl的的值怎么办?自己写OnOK()??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-11-30 22:37:31
<br>内容:如果,dialog 还在显示,即使,你的hotkey是个 DWORD, 通过GetDlgItem()<BR>可以生成一个临时的 hotkey windows object 外包一个 c++ object, 把c++ object<BR>指针传给你。但是,在idle的时候,会被destroy.<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>
<font color=red>答案被接受</font><br>回复者:John Lan 回复日期:2002-11-30 22:41:26
<br>内容:那我对话框结束,我要取 HotKeyCtrl的的值怎么办?自己写OnOK()?? <BR>Y. 
<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-30 22:44:12
<br>内容:不是。<BR>我是在对话框类中加的CHotKeyCtrl m_HotKeyCtrl;那应该在对话框没有析构之前,m_HotKeyCtrl应该是可以访问的。但不能GetHotKey()了,因为这时候它包装的那个Windows object 已经destroy了,所以ASSERT STOP ME。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-11-30 22:54:20
<br>内容:Y. U can only access the c++ object CHotKeyCtrl.<BR>and u can only call constructor and destructor :D :D.
<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-30 23:01:13
<br>内容:呵呵,John被我气得眼睛显得更大了~~<BR><BR>:)<BR><BR>OnOK()应该怎么写?<BR>{<BR>&nbsp;&nbsp; //do register hotkey<BR>&nbsp;&nbsp; theApp.dwHotKey=m_HotKeyCtrl.GetHotKey();<BR>&nbsp;&nbsp; EndDialog(IDOK);<BR>}<BR>Is this right?<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>
回复者:John Lan 回复日期:2002-11-30 23:06:30
<br>内容:OnOK()应该怎么写?<BR>{<BR>&nbsp;&nbsp; //do register hotkey<BR>&nbsp;&nbsp; theApp.dwHotKey=m_HotKeyCtrl.GetHotKey(); // Y<BR>&nbsp;&nbsp; EndDialog(IDOK); // unnecessary<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-30 23:12:30
<br>内容:Why "EndDialog(IDOK)"&nbsp;&nbsp;is unnecessary?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-12-01 00:44:33
<br>内容:啊,晕,你把CDialog::Ok() 去掉了,那么应该 EndDialog().<BR>but why erase it ? :D<BR>2002-12-1 0:52:44

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -