📄 subject_23542.htm
字号:
<p>
序号:23542 发表者:李 发表日期:2002-12-04 21:54:27
<br>主题:浩公,快来帮我呀,我都快急疯了,还是那个热键问题,请进来看:
<br>内容:我想在即使应用程序非激活状态下,只要按了CTR+C 就弹出一个对话框(对话框是应用程序里的),对话框和应用程序同时跑到前台,我按你说的方法register了CTR+C 热键,在onhotkey里添加了语句:<BR> cmydlg dlg;<BR> dlg.domodal90;<BR>现在按CTRL+C 可以弹出对话框,但是对话框和应用程序都没有跑到前台,怎样才能实现啊?帮帮我吧!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:无非 回复日期:2002-12-05 10:55:06
<br>内容:要弹到前台,用WM_SETHOTKEY,而不是RegisterHotKey().这样更简单,系统自动把你的程序弹到前台。
<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-12-05 11:00:46
<br>内容:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=23534&forum_id=34<BR>或者用RegisterHotKey,在OnHotKey()中,在弹出对话框之前先调用浩公写的那个函数,把你的程序变成前台。
<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-12-05 11:02:32
<br>内容:WM_SETHOTKEY怎么用啊,总不能动态创建一个热键吧?能不能说详细些,快疯了!
<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-12-05 11:14:33
<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-12-05 11:29:32
<br>内容:呵呵<BR>pYourWnd->SendMessage(WM_SETHOTKEY,WPARAM,LPARAM).<BR>你查一下MSDN就行了嘛。<BR>如果你还想让用户可以自己更改热键,可以使用CHotKeyCtrl
<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-12-05 20:32:13
<br>内容:上面两位说得对。<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-12-05 22:07:00
<br>内容:不行啊!我试了两种方法都不行,哎!<BR>LRESULT CBkmListView::OnHotKey(WPARAM wparam,LPARAM lparam)<BR>{<BR><BR> /*HWND hCurWnd=NULL;<BR> DWORD lMyID;<BR> DWORD lCurID;<BR> hCurWnd=::GetForegroundWindow();<BR> lMyID=::GetCurrentThreadId();<BR> lCurID=::GetWindowThreadProcessId(hCurWnd,NULL);<BR> ::AttachThreadInput(lMyID,lCurID,TRUE);<BR> SetForegroundWindow();<BR> ::AttachThreadInput(lMyID,lCurID,FALSE);*/<BR><BR> SendMessage(WM_SETHOTKEY,<BR> (WPARAM)MAKEWORD(VK_C,HOTKEYF_CONTROL),0);<BR><BR> CAddAddressDlg dlg;<BR> dlg.DoModal();<BR> return 1;<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-12-05 22:31:13
<br>内容:怎么个不行法?你把两种方法混起来了。当然不行。<BR>方法1,在InitInstance()中用RegisterHotKey()注册,然后响应WM_HOTKEY.里面用lhtom提供的那段程序,把你程序弹到前台,然后做你的对话框。<BR><BR>方法2,在InitInstance()中用SendMessage(WM_SETHOTKEY, (WPARAM)MAKEWORD(VK_C,HOTKEYF_CONTROL),0)注册。系统再收到热键后,会自动把你的程序弹到前台。如果要响应,应该是WM_SYSCOMMAND,wParam为SC_HOTKEY.<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-12-05 22:33:02
<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-12-06 10:20:37
<br>内容:第一种方法是不是把我贴出来的程序中的sendmessage去掉,然后再去掉注释,我就是那样做的,但是不行啊!
<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-12-06 22:48:33
<br>内容:对啊,是没有对话框,还是弹不到前台来?<BR><BR>如果是弹不到前台,你找LTOM算帐,他写的程序段哦。(我没看出什么不对的。)
<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>回复者:浩公 回复日期:2002-12-07 14:02:48
<br>内容:LRESULT CBkmListView::OnHotKey(WPARAM wparam,LPARAM lparam)<BR>{<BR><BR> HWND hCurWnd=NULL;<BR> DWORD lMyID;<BR> DWORD lCurID;<BR> hCurWnd=::GetForegroundWindow();<BR> lMyID=::GetCurrentThreadId();<BR> lCurID=::GetWindowThreadProcessId(hCurWnd,NULL);<BR> ::AttachThreadInput(lMyID,lCurID,TRUE);<BR> SetForegroundWindow();<BR> ::AttachThreadInput(lMyID,lCurID,FALSE);<BR><BR> CAddAddressDlg dlg;<BR> dlg.DoModal();<BR> return 1;<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-12-07 14:42:37
<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-12-07 16:13:33
<br>内容:终于ok了,只要如下即可:<BR>LRESULT CBkmListView::OnHotKey(WPARAM wparam,LPARAM lparam)<BR>{<BR>BringWindowTotop();<BR>SetForgroundWindow();<BR>CMydlg dlg;<BR>dlg.Domodal();<BR>} <BR>在别人的原码上看到的。<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 + -