﻿<?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>博客园-hoodlum1980(發發)的技术BLOG</title><link>http://www.cnblogs.com/hoodlum1980/</link><description>——ZJU: 百十载，求是魂，求是创新（领域：c/c++, c#, .NET, Compact Framework, WinCE，电力系统自动化，继电保护）</description><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2008 08:02:22 GMT</lastBuildDate><pubDate>Thu, 24 Jul 2008 08:02:22 GMT</pubDate><ttl>60</ttl><item><title>显示SendMessage和PostMessage的区别</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/07/15/1243715.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Tue, 15 Jul 2008 15:16:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/07/15/1243715.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1243715.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/07/15/1243715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1243715.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1243715.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一个小的例子在于演示SendMessage和PostMessage的区别，其区别简单来说，就是前者会等待对方的窗口过程返回，后者则仅仅给对方的消息队列中投放一个消息立即返回，不会阻塞。因此两个函数的返回值不同，前者为窗口过程的返回值（LRESULT），后者仅投递消息，因此仅返回BOOL表示是否投递成功。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height="121" alt="" src="http://www.cnblogs.com/images/cnblogs_com/hoodlum1980/TestSendMessage.jpg" width="548" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源代码下载链接（VC6）：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="http://www.cnblogs.com/Files/hoodlum1980/SendMsgTest.rar" href="http://www.cnblogs.com/Files/hoodlum1980/SendMsgTest.rar">http://www.cnblogs.com/Files/hoodlum1980/SendMsgTest.rar</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1243715.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41275/" target="_blank">[新闻]Mozilla将于本周五发布Firefox 3.1第一个预览版</a>]]></description></item><item><title>[c++]访MSN浮出窗口的示例</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/07/12/1241260.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Fri, 11 Jul 2008 23:01:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/07/12/1241260.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1241260.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/07/12/1241260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1241260.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1241260.html</trackback:ping><description><![CDATA[【声明】严格来讲，这篇文章不属于我的原创。我在这里参考了codeproject上的国外作者的模仿MSN浮出窗口的C#代码。换句话说，可以认为我把C#代码翻译成了C++代码。另外，为了简化代码，CloseButton我没有采用自己绘制，而是用一个ImageButton来代替。<br />
<br />
效果如图所示：<br />
<img height="173" alt="" src="http://www.cnblogs.com/images/cnblogs_com/hoodlum1980/notifywnd02.jpg" width="324" border="0" /><br />
<br />
<br />
窗口浮出时，停靠于屏幕右下角的位置，这里我借用了博客园的图标（仅用作范例），该窗口主要由用户自定义绘制完成。同时，为了防止浮出窗口夺取焦点，<span class="clsLiteral">SWP_NOACTIVATE</span>标识似乎有时候并没有很好的符合预期，因此我在重设窗口位置的前后强行设置了前台窗口。<br />
<br />
<img height="161" alt="" src="http://www.cnblogs.com/images/cnblogs_com/hoodlum1980/notifywnd01.jpg" width="232" border="0" /><br />
<br />
该示例的源代码（VC6.0 + Windows Platform SDK)下载：<br />
<a href="http://www.cnblogs.com/Files/hoodlum1980/JRL.NotifyWndDemo.rar">http://www.cnblogs.com/Files/hoodlum1980/JRL.NotifyWndDemo.rar</a> 
<img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1241260.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41274/" target="_blank">[新闻]瑞星将向个人用户免费1年</a>]]></description></item><item><title>windows程序开发中c++和c#的对照</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/07/04/1235669.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Fri, 04 Jul 2008 06:54:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/07/04/1235669.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1235669.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/07/04/1235669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1235669.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1235669.html</trackback:ping><description><![CDATA[&nbsp;有的选项可能仅提供C++和Windows Platform SDK中的方法（API）：<br />
<strong>（1）将窗口设为顶层窗口：<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c++：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Verdana">//[注意]：BringWindowToTop( hwnd )不会使窗口成为TopMost窗口！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetWindowPos(hDlg,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); //忽略x，y，cx，cy参数</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c#：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form1.TopMost=true;<br />
<strong>（2）设置窗口透明度：<br />
</strong><font face="Verdana">&nbsp;&nbsp;&nbsp; //将窗口设置为图层窗口样式<br />
&nbsp;&nbsp;&nbsp; SetWindowLong(hDlg,GWL_EXSTYLE, GetWindowLong(hDlg, GWL_EXSTYLE) | WS_EX_LAYERED);<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;//设置alpha值，从0~255<br />
&nbsp;&nbsp;&nbsp;BYTE alpha=200;<br />
&nbsp;&nbsp; <font face="Verdana">SetLayeredWindowAttributes(hDlg,0, alpha, LWA_ALPHA);</font><br />
<br />
<strong>(3)已知一个窗口句柄，获取窗口所在程序的HINSTANCE：</strong><br />
<font face="Verdana">HINSTANCE hInstance = (HINSTANCE)GetWindowLong(m_hParentWnd, GWL_HINSTANCE);</font><br />
<br />
<strong>（4）获取光标位置：<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL&nbsp;GetCursorPos(LPPOINT&nbsp;<em>lpPoint</em>);<br />
<br />
<strong>（5）使对话框中的某个TextBox(或其他控件)具有输入焦点：</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HWND&nbsp;SetFocus(HWND&nbsp;<em>hWnd</em>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果该方法不能工作，则可以模拟发送一个鼠标点击的消息给该控件：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostMessage(hWnd, WM_LBUTTONDOWN, 0, 0);//表示于客户区坐标（0，0）处单击<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostMessage(hWnd, WM_LBUTTONUP, 0, 0);<br />
<br />
<strong>（6）使对话框定时关闭：<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在对话框窗口过程中，在对话框初始化消息分支中安装和设定一个定时器，在WM_TIMER消息分支中调用EndDialog。<br />
<br />
<strong>（7）使一个菜单灰化或者重新使能：</strong><br />
<pre class="clsSyntax">    设置：BOOL&nbsp;EnableMenuItem(HMENU&nbsp;<em>hMenu</em>, UINT&nbsp;<em>uIDEnableItem</em>,&nbsp;UINT&nbsp;<em>uEnable</em>);</pre>
<pre class="clsSyntax">&nbsp;&nbsp;&nbsp;&nbsp;查询：UINT&nbsp;GetMenuState(HMENU&nbsp;<em>hMenu</em>, UINT&nbsp;<em>uId</em>,&nbsp;UINT&nbsp;<em>uFlags)</em>;</pre>
<strong>（8）获取对话框中的CheckBox是否被选中，设置CheckBox的状态：</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查询：if ( IsDlgButtonChecked(hDlg, nIDButton) == BST_CHECKED) ...<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 设置：BOOL CheckDlgButton(HWND&nbsp;<em>hDlg</em>,&nbsp;int&nbsp;<em>nIDButton</em>,&nbsp;UINT&nbsp;<em>uCheck)</em>;<br />
<br />
<strong>（9）获取对话框中的文本输入框填写的数字：</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UINT&nbsp;GetDlgItemInt(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;<em>hDlg</em>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;<em>nIDDlgItem</em>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;*<em>lpTranslated</em>,&nbsp;&nbsp;//告知调用方是否转换成功<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;<em>bSigned&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否需要考虑负号。</em><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取对话框控件的文本：<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;GetDlgItemText(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;<em>hDlg</em>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;<em>nIDDlgItem</em>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LPTSTR&nbsp;<em>lpString</em>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;<em>nMaxCount</em><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
<strong>（10）如何处理对话框中的TreeView控件的选择节点变化，节点展开，节点折叠等事件：</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对话框中的控件上发生事件时，通常会给它们的父窗口发送WM_NOTIFY消息。&nbsp;&nbsp;&nbsp;&nbsp;
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LRESULT OnNotify(WORD uMsg, WORD wParam, LONG lParam, BOOL&amp; bHandled)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPNMHDR hdr=(LPNMHDR)lParam;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notification code. This member can be a control-specific notification code or it <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; can be one of the common notification codes.&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font face="Verdana">if(hdr-&gt;code==TVN_SELCHANGED)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//树节点发生改变<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;else if(hdr-&gt;code==TVN_ITEMEXPANDED)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define TVE_COLLAPSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0001<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#define TVE_EXPAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0002<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#define TVE_TOGGLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0003<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</font></p>
<strong>（11）如果计算SYSTEMTIME加上一段时间后的SYSTEMTIME：</strong><br />
<div class="cnblogs_code"><img id="Code_Closed_Image_231810" onclick="this.style.display='none'; Code_Closed_Text_231810.style.display='none'; Code_Open_Image_231810.style.display='inline'; Code_Open_Text_231810.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_231810" style="display: none" onclick="this.style.display='none'; Code_Open_Text_231810.style.display='none'; Code_Closed_Image_231810.style.display='inline'; Code_Closed_Text_231810.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_231810" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_AddSeconds</span><span id="Code_Open_Text_231810" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">typedef&nbsp;union&nbsp;<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;FILETIME&nbsp;fileTime;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">文件时间</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ULONGLONG&nbsp;uint64;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">64-bit&nbsp;unsigned&nbsp;integer.</span><span style="color: #008000"><br />
</span><span style="color: #000000">}&nbsp;UNION_FILETIME;<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">为一个系统时间增加指定的秒数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;AddSeconds(CONST&nbsp;SYSTEMTIME&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">lpSrcTime,&nbsp;SYSTEMTIME&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">lpDestTime,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;seconds)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;UNION_FILETIME&nbsp;uFileTime;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">&nbsp;SystemTimeToFileTime(lpSrcTime,&nbsp;(LPFILETIME)</span><span style="color: #000000">&amp;</span><span style="color: #000000">uFileTime))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在文件时间上加上指定的分钟（转化为。。）&nbsp;文件时间的单位0.0000001&nbsp;sec,&nbsp;(10^(-7)&nbsp;sec)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断分钟的符号</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(seconds</span><span style="color: #000000">&gt;</span><span style="color: #800080">0</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uFileTime.uint64&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;UInt32x32To64(seconds,</span><span style="color: #800080">10000000</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uFileTime.uint64&nbsp;</span><span style="color: #000000">-=</span><span style="color: #000000">&nbsp;UInt32x32To64(</span><span style="color: #000000">-</span><span style="color: #000000">seconds,</span><span style="color: #800080">10000000</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FileTimeToSystemTime((FILETIME</span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</span><span style="color: #000000">uFileTime,&nbsp;lpDestTime);<br />
}</span></span></div>
<br />
<strong>（12）获取用户最近一次鼠标键盘输入到现在的时间（用户离开电脑的时间）：</strong><br />
<p style="margin-bottom: 0pt; margin-left: 13.85pt; margin-right: 0.9pt; text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'MS Shell Dlg'">&nbsp;&nbsp;&nbsp;&nbsp;LASTINPUTINFO lastInput;</span></p>
<p style="margin-bottom: 0pt; margin-left: 13.85pt; margin-right: 0.9pt; text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'MS Shell Dlg'">&nbsp;&nbsp;&nbsp; lastInput.cbSize = sizeof(lastInput);&nbsp; //important，donot forget！</span></p>
<p style="margin-bottom: 0pt; margin-left: 13.85pt; margin-right: 0.9pt; text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'MS Shell Dlg'">&nbsp;&nbsp;&nbsp; GetLastInputInfo(&amp;lastInput);</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'MS Shell Dlg'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD dwTicksSinceLastInput&nbsp;&nbsp; = GetTickCount() - lastInput.dwTime;&nbsp;&nbsp; （单位：毫秒）<br />
</span></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 备注：GetTickCount：获取自开机到现在的毫秒数。<br />
<br />
<strong>（13）防止一个程序运行多个进程实例：通过创建mutex对象来判断当前是否已经有进程在运行；</strong>
<div class="cnblogs_code"><img id="Code_Closed_Image_043826" onclick="this.style.display='none'; Code_Closed_Text_043826.style.display='none'; Code_Open_Image_043826.style.display='inline'; Code_Open_Text_043826.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_043826" style="display: none" onclick="this.style.display='none'; Code_Open_Text_043826.style.display='none'; Code_Closed_Image_043826.style.display='inline'; Code_Closed_Text_043826.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_043826" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_Mutex</span><span id="Code_Open_Text_043826" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">打开mutex，参数：request&nbsp;full&nbsp;access，handle&nbsp;not&nbsp;inheritable，object&nbsp;name</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;hMutex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;OpenMutex(MUTEX_ALL_ACCESS,&nbsp;FALSE,&nbsp;WINLOCK_MUTEX_NAME);<br />
&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(hMutex&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;NULL)<br />
&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">说明系统中尚无本进程，进程退出后系统自动销毁该对象<br />
&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建mutex，参数：no&nbsp;security&nbsp;descriptor，mutex&nbsp;not&nbsp;owned，object&nbsp;name</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;hMutex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateMutex(NULL,&nbsp;FALSE,&nbsp;WINLOCK_MUTEX_NAME);<br />
&nbsp;}<br />
&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">退出</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #800080">0</span><span style="color: #000000">);<br />
&nbsp;}<br />
</span></span></div>
<strong>（14）<font face="Verdana">控制窗口是否在任务栏显示一个按钮</font>：<br />
<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;a. 通过设定对话框的样式实现：<br />
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;显示：创建一个没有OWNER的窗口，并设置WS_EX_APPWINDOW&nbsp;扩展样式；<br />
&nbsp;&nbsp;&nbsp;&nbsp;不显示：创建一个没有OWNER的窗口，并设置WS_EX_TOOLWINDOW&nbsp;扩展样式；<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;b. 通过任务栏的COM对象来实现：<br />
</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_142241" onclick="this.style.display='none'; Code_Closed_Text_142241.style.display='none'; Code_Open_Image_142241.style.display='inline'; Code_Open_Text_142241.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_142241" style="display: none" onclick="this.style.display='none'; Code_Open_Text_142241.style.display='none'; Code_Closed_Image_142241.style.display='inline'; Code_Closed_Text_142241.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_142241" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_TaskbarList</span><span id="Code_Open_Text_142241" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ITaskbarList</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pTaskbarList;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CoCreateInstance(CLSID_TaskbarList,&nbsp;NULL,&nbsp;CLSCTX_INPROC_SERVER,&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_ITaskbarList,&nbsp;(</span><span style="color: #0000ff">void</span><span style="color: #000000">**</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</span><span style="color: #000000">pTaskbarList);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;pTaskbarList</span><span style="color: #000000">-&gt;</span><span style="color: #000000">HrInit();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(bShowInTaskbar)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在任务栏显示按钮</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTaskbarList</span><span style="color: #000000">-&gt;</span><span style="color: #000000">AddTab(hWnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在任务栏隐藏按钮</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTaskbarList</span><span style="color: #000000">-&gt;</span><span style="color: #000000">DeleteTab(hWnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;pTaskbarList</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Release();</span></span></div>
<p>&nbsp;<br />
<strong>（15）如何在通知栏（System Notify Area）放置一个图标（NotifyIcon）：<br />
</strong></p>
<div class="cnblogs_code"><img id="Code_Closed_Image_133027" onclick="this.style.display='none'; Code_Closed_Text_133027.style.display='none'; Code_Open_Image_133027.style.display='inline'; Code_Open_Text_133027.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_133027" style="display: none" onclick="this.style.display='none'; Code_Open_Text_133027.style.display='none'; Code_Closed_Image_133027.style.display='inline'; Code_Closed_Text_133027.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_133027" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_Shell_NotifyIcon</span><span id="Code_Open_Text_133027" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">NOTIFYICONDATA&nbsp;m_NotifyData;<br />
<br />
HICON&nbsp;hicon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadIcon(hInstance,MAKEINTSOURCE(IDI_TRAYICONID));<br />
m_NotifyData.cbSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(NOTIFYICONDATA&nbsp;);</span><span style="color: #008000">//</span><span style="color: #008000">字节大小</span><span style="color: #008000"><br />
</span><span style="color: #000000">m_NotifyData.hIcon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;hicon;</span><span style="color: #008000">//</span><span style="color: #008000">图标句柄</span><span style="color: #008000"><br />
</span><span style="color: #000000">m_NotifyData.hWnd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;hwnd;</span><span style="color: #008000">//</span><span style="color: #008000">窗口句柄</span><span style="color: #008000"><br />
</span><span style="color: #000000">m_NotifyData.uID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">图标ID</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;WM_TRAYICON&nbsp;(WM_USER+120)</span><span style="color: #000000"><br />
m_NotifyData.uCallbackMessage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;WM_TRAYICON;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">产生的消息</span><span style="color: #008000"><br />
</span><span style="color: #000000">strcpy(m_NotifyData.szTip,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Icon's&nbsp;Tip&nbsp;Text</span><span style="color: #800000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">鼠标在图标上悬停时的ToolTip&nbsp;Text</span><span style="color: #008000"><br />
</span><span style="color: #000000">m_NotifyData.uFlags&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NIF_MESSAGE</span><span style="color: #000000">|</span><span style="color: #000000">NIF_TIP</span><span style="color: #000000">|</span><span style="color: #000000">NIF_ICON;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置要修改哪些属性</span><span style="color: #008000"><br />
</span><span style="color: #000000">Shell_NotifyIcon(NIM_ADD,&nbsp;(PNOTIFYICONDATA)</span><span style="color: #000000">&amp;</span><span style="color: #000000">m_NotifyData);</span><span style="color: #008000">//</span><span style="color: #008000">添加</span></span></div>
<p></font><strong>&nbsp;(16)如何关闭或者注销计算机：<br />
</strong>用户进程启动以后通常不具有关机权限，因此要关闭计算机，首先需要调整我们的进程的权限，获取关机权限：</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_134304" onclick="this.style.display='none'; Code_Closed_Text_134304.style.display='none'; Code_Open_Image_134304.style.display='inline'; Code_Open_Text_134304.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_134304" style="display: none" onclick="this.style.display='none'; Code_Open_Text_134304.style.display='none'; Code_Closed_Image_134304.style.display='inline'; Code_Closed_Text_134304.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_134304" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_ExitWindowsEx</span><span id="Code_Open_Text_134304" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">关闭计算机</span><span style="color: #008000"><br />
</span><span style="color: #000000">LRESULT&nbsp;ShutDown()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hToken;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;TOKEN_PRIVILEGES&nbsp;tkp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hProcess;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;err;<br />
&nbsp;&nbsp;&nbsp;&nbsp;LPVOID&nbsp;lpMsgBuf;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当前进程的句柄</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;hProcess</span><span style="color: #000000">=</span><span style="color: #000000">GetCurrentProcess();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取调整权限和查询权限的token</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(OpenProcessToken(hProcess,&nbsp;TOKEN_ADJUST_PRIVILEGES&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;TOKEN_QUERY,&nbsp;&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">hToken))&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;open&nbsp;and&nbsp;check&nbsp;the&nbsp;privileges&nbsp;for&nbsp;to&nbsp;perform&nbsp;the&nbsp;actions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;#define&nbsp;SE_SHUTDOWN_NAME&nbsp;TEXT("SeShutdownPrivilege")</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LookupPrivilegeValue(NULL,&nbsp;SE_SHUTDOWN_NAME,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">tkp.Privileges[</span><span style="color: #800080">0</span><span style="color: #000000">].Luid);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tkp.PrivilegeCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(AdjustTokenPrivileges(hToken,&nbsp;FALSE,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">tkp,&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;(PTOKEN_PRIVILEGES)NULL,&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">adjust&nbsp;the&nbsp;privilege&nbsp;to&nbsp;perform&nbsp;the&nbsp;action，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">现在我们的进程已经具有了权限！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">关机</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitWindowsEx(EWX_SHUTDOWN</span><span style="color: #000000">|</span><span style="color: #000000">EWX_POWEROFF</span><span style="color: #000000">|</span><span style="color: #000000">EWX_FORCE,</span><span style="color: #800080">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">注销<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">重启<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,</span><span style="color: #800000">"</span><span style="color: #800000">无法关机</span><span style="color: #800000">"</span><span style="color: #000000">,</span><span style="color: #800000">"</span><span style="color: #800000">HanTing&nbsp;Hotels</span><span style="color: #800000">"</span><span style="color: #000000">,MB_OK);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;err&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetLastError();<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(err)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;将错误代码转换成文本</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FormatMessage(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FORMAT_MESSAGE_ALLOCATE_BUFFER&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;FORMAT_MESSAGE_FROM_SYSTEM,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">dwFlags</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">lpSource</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">dwMessageId&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAKELANGID(LANG_NEUTRAL,&nbsp;SUBLANG_DEFAULT),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">dwLanguageId&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LPTSTR)</span><span style="color: #000000">&amp;</span><span style="color: #000000">lpMsgBuf,&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">lpBuffer&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">nSize</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Arguments</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,(LPTSTR)lpMsgBuf,&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">,&nbsp;MB_OK</span><span style="color: #000000">|</span><span style="color: #000000">MB_ICONERROR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LocalFree(lpMsgBuf);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">没有错误出现,&nbsp;结束自身进程</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(</span><span style="color: #800080">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #800080">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;<br />
}</span></span></div>
<p><strong>(17）如何在注册表中写入一个键值：</strong></p>
<div class="cnblogs_code"><img id="Code_Closed_Image_135356" onclick="this.style.display='none'; Code_Closed_Text_135356.style.display='none'; Code_Open_Image_135356.style.display='inline'; Code_Open_Text_135356.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_135356" style="display: none" onclick="this.style.display='none'; Code_Open_Text_135356.style.display='none'; Code_Closed_Image_135356.style.display='inline'; Code_Closed_Text_135356.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_135356" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Code_RegSetValueEx</span><span id="Code_Open_Text_135356" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">--------------------------<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;write&nbsp;a&nbsp;keyvalue<br />
</span><span style="color: #008000">//</span><span style="color: #008000">--------------------------</span><span style="color: #008000"><br />
</span><span style="color: #000000">HKEY&nbsp;hKey;<br />
LONG&nbsp;result;<br />
DWORD&nbsp;dwType</span><span style="color: #000000">=</span><span style="color: #000000">REG_SZ;</span><span style="color: #008000">//</span><span style="color: #008000">C字符串</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;lpData[</span><span style="color: #800080">128</span><span style="color: #000000">];<br />
DWORD&nbsp;cbData</span><span style="color: #000000">=</span><span style="color: #000000">strlen(value)</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">设置字符串时，size必须要包含结尾的\0</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(RegOpenKey(HKEY_LOCAL_MACHINE,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">keyName</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">hKey)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;ERROR_SUCCESS)<br />
{<br />
&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果键不存在，则创建它</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(RegCreateKey(HKEY_LOCAL_MACHINE,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">keyName</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">hKey)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;ERROR_SUCCESS)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
}<br />
result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;RegSetValueEx(hKey,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">valueName</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;dwType,&nbsp;(VOID</span><span style="color: #000000">*</span><span style="color: #000000">)lpData,&nbsp;cbData);<br />
RegCloseKey(hKey);<br />
<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">--------------------------<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;query&nbsp;a&nbsp;keyvalue<br />
</span><span style="color: #008000">//</span><span style="color: #008000">--------------------------</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(RegOpenKey(HKEY_LOCAL_MACHINE,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">keyName</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">hKey)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;ERROR_SUCCESS)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
}<br />
result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;RegQueryValueEx(hKey,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">valueName</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;NULL,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dwType,&nbsp;lpData,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">cbData);<br />
RegCloseKey(hKey);<br />
</span></span></div>
<p><br />
&nbsp;<strong>（18）如何获取位图的尺寸：</strong></p>
<p>&nbsp;&nbsp; BOOL GetBitmapDimensionEx(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HBITMAP<em> <a class="synParam" onclick="showTip(this)" href="http://www.cnblogs.com/hoodlum1980/admin/">hBitmap</a></em>,&nbsp;&nbsp;&nbsp;&nbsp; // handle to bitmap<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPSIZE<em> <a class="synParam" onclick="showTip(this)" href="http://www.cnblogs.com/hoodlum1980/admin/">lpDimension</a></em>&nbsp;&nbsp; // dimensions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</p>
<img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1235669.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41273/" target="_blank">[新闻]中国互联网历史上最伟大的产品TOP10（二）</a>]]></description></item><item><title>[c#]可在任意位置弹出的BalloonTip</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/05/10/1191515.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Sat, 10 May 2008 11:46:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/05/10/1191515.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1191515.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/05/10/1191515.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1191515.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1191515.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BalloonTip通常出现在位于屏幕右下角的Tray（成为通知栏，或系统托盘）的Icon上，比如用户插拔USB设备时的气泡提示。该函数位于Shell32中，是通过调用下面这个API函数实现的， BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata ); 该函数用于控制对TrayIcon进行控制，可以弹出BalloonTip。然后却只能局限于Tray位置。而在QQ的聊天对话框中，我们发现如果不输入内容而试图发送消息时，就会在按钮上弹出这样的Tip。为此，我在C#中写了一个类似的窗口，可以在任意位置浮出，效果如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img style="font-family: " height="368" alt="" src="http://www.cnblogs.com/images/cnblogs_com/hoodlum1980/BalloonTipDemo.jpg" width="416" border="0" />
<pre></pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是测试程序的截图。在实现时，略微参考了codeproject上的仿MSN浮出窗口的代码。其涉及的主要麻烦是，为了提供足够灵活的接口，应该如何处理窗口上各个元素布局。为了简单期间，这里仅仅提供了&#8220;箭头&#8221;位于右下角的布局方式。（很显然该箭头一共可以有8个停靠位置）。<br />
&nbsp;&nbsp;&nbsp;&nbsp; （1）在弹出时，不夺走其他窗口焦点。为此使用了API的ShowWindow函数： ShowWindow(this.Handle, SW_SHOWNOACTIVATE); <br />
&nbsp;&nbsp;&nbsp;&nbsp; （2）窗体上一共包含4项主要内容：图标，标题，内容文本，关闭按钮。用户可以配置他们，例如选择图标（可以由外部设置或者使用内置图标），是否显示关闭按钮，是否自动关闭（如果把TimeoutMilliSeconds属性设为负数则不会自动关闭，只能通过CloseButton关闭），各种颜色，字体等。另提供一个BalloonClick事件，通知外部用户点击事件。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）绘制CloseButton的位图时，由于图中具有透明色，因此需要在绘制时指定透明色，相当于蒙版的作用。否则透明色会被绘制到窗体上导致窗体透明那个。<br />
&nbsp;&nbsp;&nbsp;&nbsp; （4）弹出该窗口，主要使用ShowAt（）函数。里面需要一些参数。如果需要进一步设置其他属性，可以单独进行设置。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源代码的下载链接：&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/Files/hoodlum1980/JDL.UILib_BalloonTip_VS7.rar">http://www.cnblogs.com/Files/hoodlum1980/JDL.UILib_BalloonTip_VS7.rar</a> 
 <img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1191515.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41271/" target="_blank">[新闻]盖茨官方否认天价租楼看奥运 纯属地产商炒作</a>]]></description></item><item><title>关于编译时的warning treated as error</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/03/04/1090634.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Tue, 04 Mar 2008 12:08:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/03/04/1090634.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1090634.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/03/04/1090634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1090634.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1090634.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译器提示：warning treated as error，然后某个文件未生成，build中断。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是因为项目选项中把warning级别设置为了较高的级别导致的，某些warning被当作error，从而不能生成。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方法是在解决方案窗口中选中项目，右键点击project，选择&#8220;属性&#8221;，在弹出的对话框中，选择左侧TreeView中的&#8220;Configuration Properties&#8221;-&gt;&#8220;C/C++l&#8221;-&gt;&#8220;General&#8221;节点，在右侧有&#8220;Treat Warnings As Errors&#8221;（将警告当作错误对待）选项。我们把该项该为NO即可。即把相应命令行的"/WX"改为"/W"。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相应的编译选项如下：（参考MSDN）<br />
<div class="tableSection"><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>/w</strong>&nbsp;&nbsp;&nbsp; 禁止所有警告&nbsp;<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/W</strong>n&nbsp;&nbsp; 指定显示的最高等级警告。有效等级是0~4。0级禁止所有警告。4级显示所有警告。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/Wall</strong> 使能所有警告。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/WX</strong>&nbsp;&nbsp; 视所有警告为错误。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/w</strong>ln&nbsp; 将某个指定警告视为某个级别。第一个参数是新的级别，第二个参数是警告号码。例如/w14326 使 C4326成为1级警告。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/wd</strong>n&nbsp; 禁止某特定警告。n是警告号。例如, /wd4326 禁止C4326警告。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/we</strong>n&nbsp; 将某个指定警告视为错误。n是警告号。例如, /we4326 把 C4326 视为错误。<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong>/wo</strong>n&nbsp; 某警告仅仅报告一次。例如：wo4326使C4326仅仅报告一次。</font></div>
<img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1090634.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41270/" target="_blank">[新闻]2008年7月24日IT博客精选</a>]]></description></item><item><title>对Photoshop高斯模糊滤镜的算法总结</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Mon, 03 Mar 2008 03:44:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1088567.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1088567.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1088567.html</trackback:ping><description><![CDATA[摘要: 摘要： 最近有感于部分网友对高斯模糊滤镜的研究，本文将对高斯模糊中半径值的含义以及高斯模糊模板尺寸的疑惑做出总结和解答。&nbsp;&nbsp;<a href='http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html'>阅读全文</a><img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1088567.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41269/" target="_blank">[新闻]TOM在线与Joost正式组建合资公司</a>]]></description></item><item><title>Photoshop滤镜开发简介（2）--Photoshop回调函数</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088191.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Sun, 02 Mar 2008 16:43:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088191.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1088191.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088191.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1088191.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1088191.html</trackback:ping><description><![CDATA[摘要:     在上一篇文章中，我们介绍了开发Photoshop滤镜插件最基本的一些概念和基础。Ps为了满足插件的应用需求，同时也给插件提供了大量的回调函数（或服务）。例如，滤镜可以在一次调用后，保存最近一次用户设置的参数，并应用到下次调用或显示UI。这就是通过Ps的回调函数完成的。这一篇文章我们将讲解最重要的一些Ps回调函数。了解本文之后，我们将能够使用回调函数，完成例如存储我们的滤镜参数等必要的工作。本篇文章将比第一篇复杂和深入的多，但同时从这篇文章我们也可以一窥PS内部的秘密：缜密的系统设计，完善的接口以及复杂的工作机制。&nbsp;&nbsp;<a href='http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088191.html'>阅读全文</a><img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1088191.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41269/" target="_blank">[新闻]TOM在线与Joost正式组建合资公司</a>]]></description></item><item><title>flyweight模式和图元几何变换</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/02/29/1085529.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Thu, 28 Feb 2008 16:02:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/02/29/1085529.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1085529.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/02/29/1085529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1085529.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1085529.html</trackback:ping><description><![CDATA[摘要:       在flyweight模式，指的是具有大量的轻量级对象，我们为这些对象建立一个实体对象，其他则为“虚像”或者称为对该实体的一种“引用”。在我从前的项目中，电力系统的矢量图中，有大量设备，同种类型设备采用一种符号绘制，称为图元。这里就属于一中flyweight模式应用。......&nbsp;&nbsp;<a href='http://www.cnblogs.com/hoodlum1980/archive/2008/02/29/1085529.html'>阅读全文</a><img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1085529.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41268/" target="_blank">[新闻]财富:谷歌副总裁称其新闻搜索值1亿美元</a>]]></description></item><item><title>对Photoshop第三方滤镜插件开发的简介</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1085158.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Thu, 28 Feb 2008 09:17:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1085158.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1085158.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1085158.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1085158.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1085158.html</trackback:ping><description><![CDATA[摘要:       Photoshop是数字图像处理的杰出软件。他允许第三方以插件形式扩展功能。本文讲解用户最为熟悉的Photoshop滤镜插件的开发，以一个水滴效果滤镜为实例，主要介绍滤镜插件的开发流程，讨论了一些比较重要的相关技术细节问题。&nbsp;&nbsp;<a href='http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1085158.html'>阅读全文</a><img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1085158.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41267/" target="_blank">[新闻]Ubuntu创始人呼吁开发Linux桌面软件对抗苹果</a>]]></description></item><item><title>对ZOJ第1146题的解答：LC-Display</title><link>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1084331.html</link><dc:creator>hoodlum1980</dc:creator><author>hoodlum1980</author><pubDate>Wed, 27 Feb 2008 20:43:00 GMT</pubDate><guid>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1084331.html</guid><wfw:comment>http://www.cnblogs.com/hoodlum1980/comments/1084331.html</wfw:comment><comments>http://www.cnblogs.com/hoodlum1980/archive/2008/02/28/1084331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hoodlum1980/comments/commentRss/1084331.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hoodlum1980/services/trackbacks/1084331.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 题目链接：<font face="Verdana"><a href="http://acm.zju.edu.cn/show_problem.php?pid=1146">http://acm.zju.edu.cn/show_problem.php?pid=1146</a></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一道用于把数字显示成LCD样子的题目，输入每一行有两个整数，第一个整数n表示笔画大小，第二个是需要显示成LCD样子的数字。这道题没有什么太难的，但是却让我在输出格式上卡住了，始终是Presentation Error，让我百思不得其解。后来我才发现原来是因为题目叙述的不够精确，使我没有准确理解输出格式的要求，导致我每一行都多输出了一个结尾空格。找到问题后，当然立刻就AC了。代码也不具备什么含量。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于没有什么难度的地方，并且我也加了一点点注释，所以就没什么可做更多叙述的了。这只是一道比较简单的题目，但是输出格式一定要正确理解。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Code_Closed_Image_044128" onclick="this.style.display='none'; Code_Closed_Text_044128.style.display='none'; Code_Open_Image_044128.style.display='inline'; Code_Open_Text_044128.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image_044128" style="display: none" onclick="this.style.display='none'; Code_Open_Text_044128.style.display='none'; Code_Closed_Image_044128.style.display='inline'; Code_Closed_Text_044128.style.display='inline';" height="16" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text_044128" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">ZOL 1146 CODE</span><span id="Code_Open_Text_044128" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintVer(</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintHor(</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintNumbers(</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">);<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">LCD的字型码</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;&nbsp; -0-<br />
&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -3-<br />
&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -6-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;LCDCODES[</span><span style="color: #800080">10</span><span style="color: #000000">][</span><span style="color: #800080">7</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000"><br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">0</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">1</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">2</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">3</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">4</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">5</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">6</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">7</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">},</span><span style="color: #008000">/*</span><span style="color: #008000">8</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">1</span><span style="color: #000000">}&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">9</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
};<br />
<br />
</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c_ver</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">|</span><span style="color: #800000">'</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c_hor</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">-</span><span style="color: #800000">'</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;两个相邻字母中间隔了一个空列&nbsp;，因此平均每个字母占据n+3列，最后一列为间隔</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">打印竖直笔画，n-笔画长度，section=1或者4，numbers-数字字符串</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintVer(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;section,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">numbers)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,len</span><span style="color: #000000">=</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">3</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">strlen(numbers);<br />
&nbsp;&nbsp;&nbsp;&nbsp;line</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">)malloc(len</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(line</span><span style="color: #000000">==</span><span style="color: #000000">NULL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;memset(line,</span><span style="color: #800000">'</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #000000">,len);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">strlen(numbers);i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(LCDCODES[</span><span style="color: #000000">*</span><span style="color: #000000">(numbers</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">-</span><span style="color: #800000">'</span><span style="color: #800000">0</span><span style="color: #800000">'</span><span style="color: #000000">][section])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(line</span><span style="color: #000000">+</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">3</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">i)</span><span style="color: #000000">=</span><span style="color: #000000">c_ver;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(LCDCODES[</span><span style="color: #000000">*</span><span style="color: #000000">(numbers</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">-</span><span style="color: #800000">'</span><span style="color: #800000">0</span><span style="color: #800000">'</span><span style="color: #000000">][section</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(line</span><span style="color: #000000">+</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">3</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">i</span><span style="color: #000000">+</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">))</span><span style="color: #000000">=</span><span style="color: #000000">c_ver;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">检查最后一个字符，如果没有笔画，要使\0前移2格！</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;line[len</span><span style="color: #000000">-</span><span style="color: #800080">1</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">\0</span><span style="color: #800000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">打印n行</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #800000">"</span><span style="color: #800000">%s\n</span><span style="color: #800000">"</span><span style="color: #000000">,line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;free(line);<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">打印水平笔画，n-笔画长度，section=0，3，or&nbsp;6，numbers-数字字符串</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintHor(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;section,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">numbers)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,len</span><span style="color: #000000">=</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">3</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">strlen(numbers);<br />
&nbsp;&nbsp;&nbsp;&nbsp;line</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">)malloc(len</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(line</span><span style="color: #000000">==</span><span style="color: #000000">NULL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;memset(line,</span><span style="color: #800000">'</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #000000">,len);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">strlen(numbers);i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(LCDCODES[</span><span style="color: #000000">*</span><span style="color: #000000">(numbers</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">-</span><span style="color: #800000">'</span><span style="color: #800000">0</span><span style="color: #800000">'</span><span style="color: #000000">][section])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset((line</span><span style="color: #000000">+</span><span style="color: #000000">(n</span><span style="color: #000000">+</span><span style="color: #800080">3</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">i</span><span style="color: #000000">+</span><span style="color: #800080">1</span><span style="color: #000000">),c_hor,n);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">注意最后一个数字后面无需空格了！所以多缩进一个位置</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;line[len</span><span style="color: #000000">-</span><span style="color: #800080">1</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">\0</span><span style="color: #800000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">打印1行</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #800000">"</span><span style="color: #800000">%s\n</span><span style="color: #800000">"</span><span style="color: #000000">,line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;free(line);<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;Print&nbsp;A&nbsp;set&nbsp;of&nbsp;Numbers&nbsp;:&nbsp;"23456"&nbsp;e.g.&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;PrintNumbers(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">numbers)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintHor(n,</span><span style="color: #800080">0</span><span style="color: #000000">,numbers);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintVer(n,</span><span style="color: #800080">1</span><span style="color: #000000">,numbers);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintHor(n,</span><span style="color: #800080">3</span><span style="color: #000000">,numbers);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintVer(n,</span><span style="color: #800080">4</span><span style="color: #000000">,numbers);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintHor(n,</span><span style="color: #800080">6</span><span style="color: #000000">,numbers);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
}<br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;line[</span><span style="color: #800080">20</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">str1,</span><span style="color: #000000">*</span><span style="color: #000000">numbers,</span><span style="color: #000000">*</span><span style="color: #000000">delim</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets(line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str1</span><span style="color: #000000">=</span><span style="color: #000000">strtok(line,delim);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numbers</span><span style="color: #000000">=</span><span style="color: #000000">strtok(NULL,delim);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">=</span><span style="color: #000000">atoi(str1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n</span><span style="color: #000000">&lt;=</span><span style="color: #800080">0</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintNumbers(n,numbers);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">每两行数字之间有一个空行</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #800000">"</span><span style="color: #800000">\n</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #800080">1</span><span style="color: #000000">);<br />
}</span></span></div>
<p align="left">&nbsp;<span style="color: #008000">/*</span><span style="color: #008000">--------------------------------------------------<br />
打印后正确的输出格式应该类似下面这样：（@表示行尾）<br />
<span style="font-size: 8pt; font-family: 黑体">&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;@<br style="font-family: " />
|&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;&nbsp;@<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;@<br style="font-family: " />
|&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|@<br style="font-family: " />
&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;@<br style="font-family: " />
</span>----------------------------------------------------</span><span style="color: #008000">*/</span></p>
<img src ="http://www.cnblogs.com/hoodlum1980/aggbug/1084331.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41267/" target="_blank">[新闻]Ubuntu创始人呼吁开发Linux桌面软件对抗苹果</a>]]></description></item></channel></rss>