﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-swo2006-文章分类-mfc</title><link>http://www.cppblog.com/swo2006/category/3197.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 21 May 2008 21:23:07 GMT</lastBuildDate><pubDate>Wed, 21 May 2008 21:23:07 GMT</pubDate><ttl>60</ttl><item><title>非模式对话框作为主对话框的子窗口,动态修改Style</title><link>http://www.cppblog.com/swo2006/articles/16512.html</link><dc:creator>swo</dc:creator><author>swo</author><pubDate>Sat, 16 Dec 2006 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/swo2006/articles/16512.html</guid><wfw:comment>http://www.cppblog.com/swo2006/comments/16512.html</wfw:comment><comments>http://www.cppblog.com/swo2006/articles/16512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/swo2006/comments/commentRss/16512.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/swo2006/services/trackbacks/16512.html</trackback:ping><description><![CDATA[将这个非模式对话框作为主对话框的子窗口。   <br />   比如：   <br />      <br />   BOOL   CDlg1::OnInitDialog()   <br />   {   <br />   CDialog::OnInitDialog();   <br />   CDlg2   *pDlg2   =   new   CDlg2   ;   <br />   pDlg2-&gt;Create(IDD_...,this);   <br />   pDlg2-&gt;ShowWindow(SW_SHOW);   <br />   pDlg2-&gt;MoveWindow(...);   <br />   return   TRUE;   <br />   }   <br />      <br />   dlg2属性设为：   <br />   style      child   <br />   取消   Title   Bar   <br />   Border   none  <br /><br /><br />/////////////////////////////////////////////////////////////<br />一个对话框资源，在资源编辑器里面设计时样式：<br />child<br />无边框<br />无系统菜单<br />无标题<br />这主要是为了作为子窗口嵌入TAB页用<br />现在，我又想单独使用它，让他能像普通对话框那样弹出，又有标题栏之类的<br />我用m_nMode来区分使用的模式，在OnInitDialog()中加入了一下代码：<br />if(0 != m_nMode)<br />{<br />//非子窗口模式<br />DWORD dwStyle;<br />dwStyle=GetStyle();<br />ModifyStyle(dwStyle,WS_DLGFRAME|WS_POPUP|WS_VISIBLE|WS_BORDER,SWP_SHOWWINDOW);<br />}<br />结果运行后，找不到弹出的对话框了，调用者窗口也无法操作了。<br />怎么解决？？<br /><br />后来我改用下面的代码，能用是能用了，但是问题N多：<br />if(0 != m_nMode)<br />{<br />RECT rect;<br />GetWindowRect(&amp;rect);<br />ScreenToClient(&amp;rect);<br />//单独使用模式<br />DWORD dwStyle;<br />dwStyle=GetStyle();<br />ModifyStyle(dwStyle,<br />WS_DLGFRAME|WS_POPUP|WS_VISIBLE|WS_BORDER,<br />SWP_SHOWWINDOW|SWP_FRAMECHANGED);<br />SetParent(GetDesktopWindow());<br />rect.right+=30;<br />rect.bottom+=40;<br />ClientToScreen(&amp;rect);<br />MoveWindow(&amp;rect);<br />EnableWindow();<br />ShowWindow(SW_SHOW);<br />//SetWindowPos(&amp;CWnd::wndTopMost,0,0,rect.right-rect.left+50,<br />//rect.bottom-rect.top+60,SWP_NOMOVE);<br />        //Invalidate();<br />}<br /><img src ="http://www.cppblog.com/swo2006/aggbug/16512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/swo2006/" target="_blank">swo</a> 2006-12-16 16:37 <a href="http://www.cppblog.com/swo2006/articles/16512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加载外部编译好的DLL文件</title><link>http://www.cppblog.com/swo2006/articles/16418.html</link><dc:creator>swo</dc:creator><author>swo</author><pubDate>Thu, 14 Dec 2006 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/swo2006/articles/16418.html</guid><wfw:comment>http://www.cppblog.com/swo2006/comments/16418.html</wfw:comment><comments>http://www.cppblog.com/swo2006/articles/16418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/swo2006/comments/commentRss/16418.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/swo2006/services/trackbacks/16418.html</trackback:ping><description><![CDATA[ 发表时间：2005-7-22 14:27:00
                  
                
              
            
              <hr size="1" /><p align="right">　<b>楼主  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">我想在我工程里面加载外部编译好的DLL文件,并调用里面的函数,应该怎么设置????????????
                      </td></tr></tbody></table></div><p></p></center><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#f9ffff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="262624">作者：</a><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">cracker007</a><br /><font color="#ff0000">专家分：21880</font><br /><img src="http://www.programfan.com/club/face/0.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=cracker007','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-26 18:31:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  1
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">用loadlibrary()
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#e8f4ff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="263496">作者：</a><a href="http://www.programfan.com/club/member.asp?name=escon" target="_blank">escon</a><br /><font color="#ff0000">专家分：0</font><br /><img src="http://www.programfan.com/club/face/49.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=escon" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=escon','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-27 18:31:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  2
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">有谁知道？我也在找啊
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#f9ffff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="264915">作者：</a><a href="http://www.programfan.com/club/member.asp?name=pianpianni" target="_blank">pianpianni</a><br /><font color="#ff0000">专家分：20</font><br /><img src="http://www.programfan.com/club/face/49.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=pianpianni" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=pianpianni','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-29 10:33:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  3
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">HINSTANCE hinstDLL=NULL; <br />
 hinstDLL=LoadLibrary("hgh.dll");<br />
 if (hinstDLL)<br />
 {<br />
 me Proc;<br />
 Proc = (me) GetProcAddress(hinstDLL,"hgh");<br />
 if(Proc==NULL) AfxMessageBox("Not found fuctdion ");
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#e8f4ff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="265598">作者：</a><a href="http://www.programfan.com/club/member.asp?name=xqm" target="_blank">xqm</a><br /><font color="#ff0000">专家分：250</font><br /><img src="http://www.programfan.com/club/face/6.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=xqm" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=xqm','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-30 1:08:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  4
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">楼上说得挺好。<br />
当然，可以补充一点：<br />
楼上说的是显示调用，你也可以隐蔽的方法，如下：<br />
1.将要调用的函数作 extern 声明。<br />
2.将动态链接库的.dll文件复制到windows 下的system目录，将.lib文件复制到应用程序所在目录。<br />
3.执行Project|Settings菜单命令，在link页面的Object/library modules中输入导入库的路径如：Debug/mydll.lib.<br /><br />
就可以直接使用dll中的函数了。
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#f9ffff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="265674">作者：</a><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">白云小飞</a><br /><font color="#ff0000">专家分：260</font><br /><img src="http://www.programfan.com/club/face/85.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-30 9:01:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  5
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">楼3，楼4说得很好！不过我有一个问题。楼4所说的动态链接库方法能不能不用将.dll放在system的目录下而是放在其它的某个指定目录下？
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#e8f4ff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="265713">作者：</a><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">cracker007</a><br /><font color="#ff0000">专家分：21880</font><br /><img src="http://www.programfan.com/club/face/0.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=cracker007','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-30 10:21:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  6
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">没问题。可以放在环境变量path指定的目录下。
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#f9ffff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="266584">作者：</a><a href="http://www.programfan.com/club/member.asp?name=xin5439" target="_blank">xin5439</a><br /><font color="#ff0000">专家分：520</font><br /><img src="http://www.programfan.com/club/face/9.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=xin5439" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=xin5439','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-31 16:12:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  7
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">随便放在哪里都行，LoadLibrary()中用绝对路径就可以了
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#e8f4ff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="266851">作者：</a><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">白云小飞</a><br /><font color="#ff0000">专家分：260</font><br /><img src="http://www.programfan.com/club/face/85.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-31 23:38:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  8
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">我们来进一步讨论DLL的函数调用中的参数问题及返回值吧？如何具体地调用一个有引入参数、引出参数、返回值的函数呢？
                            </td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><div align="center"><center><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#f9ffff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="266859">作者：</a><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">白云小飞</a><br /><font color="#ff0000">专家分：260</font><br /><img src="http://www.programfan.com/club/face/85.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=%E7%99%BD%E4%BA%91%E5%B0%8F%E9%A3%9E','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-7-31 23:46:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  9
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">一． 动态链接库分类。<br />
&amp;#61618; 与MFC无关的Win32动态链接库<br />
&amp;#61618; Regular Dll with MFC Statically linked<br />
&amp;#61618; Regular Dll using shared MFC DLL<br />
&amp;#61618; MFC Extension DLL(using shared MFC DLL).<br />
这四种方式中MFC Extension DLL(using shared MFC DLL).不知是有什么特点？请教各位大虾了！<br /></td></tr></tbody></table></div></center></td></tr></tbody></table></center></div><table bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#e8f4ff" border="1" cellpadding="0" cellspacing="0" width="755"><tbody><tr><td valign="top" width="164"><p align="center"><a name="267122">作者：</a><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">cracker007</a><br /><font color="#ff0000">专家分：21880</font><br /><img src="http://www.programfan.com/club/face/0.gif" border="0" /></p><div align="center"><table border="0" cellpadding="0" width="60%"><tbody><tr><td width="100%"><img src="http://www.programfan.com/club/image/website.gif" border="0" /><a href="http://www.programfan.com/club/member.asp?name=cracker007" target="_blank">会员信息</a><br /><img src="http://www.programfan.com/club/image/message.gif" border="0" /><a href="javascript:subwin('sendmessage.asp?touser=cracker007','sendmessage',500,400)">发短消息</a>  <br /></td></tr></tbody></table></div></td><td valign="top" width="590"><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="531"><tbody><tr><td width="527"> 发表时间：2005-8-1 12:24:00
					</td></tr></tbody></table></div><center><hr size="1" /></center><p align="right">　<b>第<font color="#ff0000">
                  10
                  </font>楼  </b></p><center><div align="center"><table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody><tr><td style="table-layout: fixed;" width="100%">如果要扩展mfc类，就必须用它。举个例子，你有个对话框cyourdialog类，你自己从cdialog派生出来的，你要想在主程序中调用dll,就得把dll做成mfc extension.<br />
我倒是想知道Regular Dll with MFC Statically linked和lib有什么区别？不都是静态的吗？</td></tr></tbody></table></div></center></td></tr></tbody></table><img src ="http://www.cppblog.com/swo2006/aggbug/16418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/swo2006/" target="_blank">swo</a> 2006-12-14 11:05 <a href="http://www.cppblog.com/swo2006/articles/16418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件读取对话框的使用</title><link>http://www.cppblog.com/swo2006/articles/11455.html</link><dc:creator>swo</dc:creator><author>swo</author><pubDate>Sat, 19 Aug 2006 08:23:00 GMT</pubDate><guid>http://www.cppblog.com/swo2006/articles/11455.html</guid><wfw:comment>http://www.cppblog.com/swo2006/comments/11455.html</wfw:comment><comments>http://www.cppblog.com/swo2006/articles/11455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/swo2006/comments/commentRss/11455.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/swo2006/services/trackbacks/11455.html</trackback:ping><description><![CDATA[    char szFilters[]=<br />        "MyType Files (*.*)|*.bmp|All Files (*.*)|*.*||";<br /><br />    CFileDialog fileDialog (TRUE, "bmp", "*.bmp",<br />        OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);<br />    CString filePath = "";<br />    CString fileName = "";<br />    if( fileDialog.DoModal ()==IDOK )<br />    {<br />        filePath = fileDialog.GetPathName();    <br />        fileName = fileDialog.GetFileTitle ();<br />    }<br /><br /><img src ="http://www.cppblog.com/swo2006/aggbug/11455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/swo2006/" target="_blank">swo</a> 2006-08-19 16:23 <a href="http://www.cppblog.com/swo2006/articles/11455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>屏蔽WIN、ALT+TAB、CTRL+ESC键的低级键盘钩子(ZT)</title><link>http://www.cppblog.com/swo2006/articles/11372.html</link><dc:creator>swo</dc:creator><author>swo</author><pubDate>Thu, 17 Aug 2006 12:45:00 GMT</pubDate><guid>http://www.cppblog.com/swo2006/articles/11372.html</guid><wfw:comment>http://www.cppblog.com/swo2006/comments/11372.html</wfw:comment><comments>http://www.cppblog.com/swo2006/articles/11372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/swo2006/comments/commentRss/11372.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/swo2006/services/trackbacks/11372.html</trackback:ping><description><![CDATA[
		<font style="font-size: 14pt;" color="#295200">
				<b>屏蔽WIN、ALT+TAB、CTRL+ESC键的低级键盘钩子(ZT)</b>
		</font>
		<table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="100%">
				<tbody>
						<tr>
								<td>
										<div style="margin: 15px;" id="art">
												<div>调函数：<br /><br />LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)<br />{<br />    BOOL fEatKeystroke = FALSE;<br />    PKBDLLHOOKSTRUCT p = NULL;<br /><br />    if (nCode == HC_ACTION) <br />    {<br />        p = (PKBDLLHOOKSTRUCT) lParam;<br />        switch (wParam) <br />        {<br />            case WM_KEYDOWN: <br />                // Backdoor to user information<br />                if (p-&gt;vkCode == VK_F8)<br />                {<br />                    ::MessageBox(NULL,"Let's make things better and better!\n","HQ Tech",MB_OK);<br />                    break;<br />                }<br />            case WM_SYSKEYDOWN:<br />            case WM_KEYUP:    <br />            case WM_SYSKEYUP: <br />                fEatKeystroke = (p-&gt;vkCode == VK_LWIN) || (p-&gt;vkCode == VK_RWIN) ||  // 屏蔽Win<br />                                // 屏蔽Alt+Tab<br />                                ((p-&gt;vkCode == VK_TAB) &amp;&amp; ((p-&gt;flags &amp; LLKHF_ALTDOWN) != 0)) ||<br />                                // 屏蔽Alt+Esc<br />                                ((p-&gt;vkCode == VK_ESCAPE) &amp;&amp; ((p-&gt;flags &amp; LLKHF_ALTDOWN) != 0)) ||<br />                                // 屏蔽Ctrl+Esc<br />                                ((p-&gt;vkCode == VK_ESCAPE) &amp;&amp; ((GetKeyState(VK_CONTROL) &amp; 0x8000) != 0));<br />                break;<br />            default:<br />                break;<br />      }<br />    }<br /><br />  return (fEatKeystroke ? TRUE : CallNextHookEx(glhHook,nCode,wParam,lParam));<br />}<br /><br />安装及卸载钩子：<br /><br />void _stdcall StartKeyMask()<br />{<br />    // 安装钩子<br />    glhHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,glhInstance,0);<br />}<br /><br />void _stdcall StopKeyMask()<br />{<br />    // 卸载钩子<br />    if (glhHook!=NULL)<br />        UnhookWindowsHookEx(glhHook);<br />}</div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cppblog.com/swo2006/aggbug/11372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/swo2006/" target="_blank">swo</a> 2006-08-17 20:45 <a href="http://www.cppblog.com/swo2006/articles/11372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>