??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频在线免费观看,久久丁香综合五月国产三级网站,国产精品久久久久毛片软件http://www.aygfsteel.com/wenhl5656/category/34787.html惌v和老肖研究中断的日子,倍觉温馨zh-cnTue, 22 Dec 2009 11:39:46 GMTTue, 22 Dec 2009 11:39:46 GMT60两个已排序链表的合ƈhttp://www.aygfsteel.com/wenhl5656/archive/2009/06/21/283442.html爱吃鱼头爱吃鱼头Sun, 21 Jun 2009 04:02:00 GMThttp://www.aygfsteel.com/wenhl5656/archive/2009/06/21/283442.htmlhttp://www.aygfsteel.com/wenhl5656/comments/283442.htmlhttp://www.aygfsteel.com/wenhl5656/archive/2009/06/21/283442.html#Feedback0http://www.aygfsteel.com/wenhl5656/comments/commentRss/283442.htmlhttp://www.aygfsteel.com/wenhl5656/services/trackbacks/283442.html 1 typedef struct Node{
 2     int data;
 3     struct Node* next;
 4 }Node, *LinkList;
 5 void Merge(LinkList la, LinkList lb, LinkList &lc)
 6 {
 7     // NULL?/span>
 8     if(!la) {lc = pb; return;}
 9     if(!lb) {lc = pa; return;}
10     Node* p;
11     
12     // 定最大值在la? q是lb?/span>
13     if(la.data > lb.data) { lc = p = la; la = la->next; }
14     else { lc = p = lb; lb = lb->next; }
15     
16     while(la &&lb)
17     {
18         if(la.data > lb.data)
19         {
20             p->next = la;
21             la = la->next;
22         }else if(la.data < lb.data)
23         {
24             p->next = lb;
25             lb = lb->next;
26         }else// la ?nbsp;lb中值相{的情况
27             p->next = la;
28             la = la->next;
29             Node* tmp = lb;
30             lb = lb->next;
31             free(tmp);
32         }
33         p = p->next;
34     }
35     // 剩余部分链表的挂?/span>
36     p->next = (la ? la:lb);
37 }

爱吃鱼头 2009-06-21 12:02 发表评论
]]>
带通配W的字符匚whttp://www.aygfsteel.com/wenhl5656/archive/2009/06/16/282490.html爱吃鱼头爱吃鱼头Mon, 15 Jun 2009 17:02:00 GMThttp://www.aygfsteel.com/wenhl5656/archive/2009/06/16/282490.htmlhttp://www.aygfsteel.com/wenhl5656/comments/282490.htmlhttp://www.aygfsteel.com/wenhl5656/archive/2009/06/16/282490.html#Feedback0http://www.aygfsteel.com/wenhl5656/comments/commentRss/282490.htmlhttp://www.aygfsteel.com/wenhl5656/services/trackbacks/282490.html 首先?Q根?的功能,?表示L字符Q也是说在匚wq程中,?永远匚w成功。本质上Q?q没有修改算法,而仅仅修改了匚w规则——遇?则一定匹配?
然?与此不同Q?的作用是匚wL多个字符Q显然我们不能简单的修改匚wq程而满求。如果我们重新思?的作用,我们?x)发?的另一个作用就是分割PԌ卛_果P=P1*P2Q那么与其说*代表匚wL多个字符Q不如说P的匹配条件是在匹配P1子串后再匚wP2子串?
因此Q可以写出带通配W的字符串匹配算?nbsp; 阅读全文

爱吃鱼头 2009-06-16 01:02 发表评论
]]>
在VC中链接动态链接库的方?/title><link>http://www.aygfsteel.com/wenhl5656/archive/2008/10/04/232325.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Sat, 04 Oct 2008 06:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/wenhl5656/archive/2008/10/04/232325.html</guid><wfw:comment>http://www.aygfsteel.com/wenhl5656/comments/232325.html</wfw:comment><comments>http://www.aygfsteel.com/wenhl5656/archive/2008/10/04/232325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wenhl5656/comments/commentRss/232325.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wenhl5656/services/trackbacks/232325.html</trackback:ping><description><![CDATA[     摘要: 在做VC目Ӟ用到的关于动态链接库的一些知识?<br>链接动态链接库的一些方?nbsp; <a href='http://www.aygfsteel.com/wenhl5656/archive/2008/10/04/232325.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wenhl5656/aggbug/232325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-10-04 14:47 <a href="http://www.aygfsteel.com/wenhl5656/archive/2008/10/04/232325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC中鼠标绘囄一些收?/title><link>http://www.aygfsteel.com/wenhl5656/archive/2008/10/03/232270.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Fri, 03 Oct 2008 15:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/wenhl5656/archive/2008/10/03/232270.html</guid><wfw:comment>http://www.aygfsteel.com/wenhl5656/comments/232270.html</wfw:comment><comments>http://www.aygfsteel.com/wenhl5656/archive/2008/10/03/232270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wenhl5656/comments/commentRss/232270.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wenhl5656/services/trackbacks/232270.html</trackback:ping><description><![CDATA[      今天试学着在MFC中用鼠标l图Q虽然是单的M些直U,但也收获不小?br />       首先Ҏ(gu)下鼠标的点进行记录,因此?span><strong>WM_LBUTTONDOWN</strong>消息d代码Q?/span> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋?>     </p> <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"><span style="color: #008080">1</span><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnLButtonDown(UINT nFlags, CPoint point)<br /> </span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_57_122_Open_Image" onclick="this.style.display='none'; Codehighlighter1_57_122_Open_Text.style.display='none'; Codehighlighter1_57_122_Closed_Image.style.display='inline'; Codehighlighter1_57_122_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_57_122_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_57_122_Closed_Text.style.display='none'; Codehighlighter1_57_122_Open_Image.style.display='inline'; Codehighlighter1_57_122_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_57_122_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_57_122_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    m_ptOrigin</span><span style="color: #000000">=</span><span style="color: #000000">point;<br />       SetCapture();<br /> </span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    CView::OnLButtonDown(nFlags, point);<br /> </span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> </span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"></span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left">    然后Q在鼠标弹vӞ响应 <span><strong>WM_LBUTTONUP</strong>消息Q因此添?/p> <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"><span style="color: #008080">1</span><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnLButtonUp(UINT nFlags, CPoint point)<br /> </span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_55_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_152_Open_Text.style.display='none'; Codehighlighter1_55_152_Closed_Image.style.display='inline'; Codehighlighter1_55_152_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_55_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_55_152_Closed_Text.style.display='none'; Codehighlighter1_55_152_Open_Image.style.display='inline'; Codehighlighter1_55_152_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_55_152_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_55_152_Open_Text"><span style="color: #000000">{<br />         if (GetCapture() != this)       return; <br /> </span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    CDC </span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();<br /> </span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">MoveTo(m_ptOrigin);<br /> </span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">LineTo(point);<br /> </span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    ReleaseDC(pDC);<br />          ReleaseCapture();<br /> </span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">8</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">     q样便在客户区绘Z一条直Uѝ但是有个缺P是在鼠标移动的q程中,屏幕上没有Q何显C。而我们希望在按下鼠标后,随着鼠标拖动Q可以看C条直UK之移动,在鼠标弹hQ这条直U也定下来。因此,试着d<span>WM_MOUSEMOVE消息响应函数<br /> </p> <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"><span style="color: #008080">1</span><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnMouseMove(UNIT nFlags, CPoint point)<br /> </span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_55_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_152_Open_Text.style.display='none'; Codehighlighter1_55_152_Closed_Image.style.display='inline'; Codehighlighter1_55_152_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_55_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_55_152_Closed_Text.style.display='none'; Codehighlighter1_55_152_Open_Image.style.display='inline'; Codehighlighter1_55_152_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_55_152_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_55_152_Open_Text"><span style="color: #000000">{<br />           if (GetCapture() != this)<br />                   return; <br /> </span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    CDC </span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();    <br /> </span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">MoveTo(m_ptPrev);    <br /> </span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">LineTo(point);<br /> </span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    ReleaseDC(pDC);<br /> </span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">       d之后Q在鼠标UdӞ实有直U绘出,但更大的问题出现了,只见屏幕是都是直Uѝؓ(f)解决此问题,google良久Q终于找C个解军_法——在鼠标UdӞ用异或笔模式l图Q即以与屏幕相反的颜色绘?Pixel is the inverse of the screen color——MSDN)。具体做法是Q记录鼠标移动的上一个点坐标Q在鼠标UdӞ讄异或l图模式Q绘制原来的直线Q再l制新直Uѝ具体代码如下:(x)<br /> </p> <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"><span style="color: #008080"> 1</span><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #008000">//</span><span style="color: #008000">在CDrawView中定义:(x)<br /> </span><span style="color: #008080"> 2</span><span style="color: #008000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000"> CPoint    m_ptPrev;<br /> </span><span style="color: #008080"> 3</span><span style="color: #008000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000"> CPoint    m_ptOld;</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 4</span><span style="color: #008000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #000000"><br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnLButtonDown(UINT nFlags, CPoint point) <br /> </span><span style="color: #008080"> 6</span><span style="color: #000000"><img id="Codehighlighter1_121_215_Open_Image" onclick="this.style.display='none'; Codehighlighter1_121_215_Open_Text.style.display='none'; Codehighlighter1_121_215_Closed_Image.style.display='inline'; Codehighlighter1_121_215_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_121_215_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_121_215_Closed_Text.style.display='none'; Codehighlighter1_121_215_Open_Image.style.display='inline'; Codehighlighter1_121_215_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_121_215_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_121_215_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    m_ptPrev </span><span style="color: #000000">=</span><span style="color: #000000"> point;<br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    m_ptOld  </span><span style="color: #000000">=</span><span style="color: #000000"> point;<br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    SetCapture(); <br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    CView::OnLButtonDown(nFlags, point);<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnLButtonUp(UINT nFlags, CPoint point) <br /> </span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_274_416_Open_Image" onclick="this.style.display='none'; Codehighlighter1_274_416_Open_Text.style.display='none'; Codehighlighter1_274_416_Closed_Image.style.display='inline'; Codehighlighter1_274_416_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_274_416_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_274_416_Closed_Text.style.display='none'; Codehighlighter1_274_416_Open_Image.style.display='inline'; Codehighlighter1_274_416_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_274_416_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_274_416_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (GetCapture() </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">)<br /> </span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000">; <br /> </span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    CDC </span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();    <br /> </span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">MoveTo(m_ptPrev);    <br /> </span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">LineTo(point);<br /> </span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    ReleaseDC(pDC);<br /> </span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    ReleaseCapture();<br /> </span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> </span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000"> CDrawView::OnMouseMove(UINT nFlags, CPoint point) <br /> </span><span style="color: #008080">25</span><span style="color: #000000"><img id="Codehighlighter1_475_754_Open_Image" onclick="this.style.display='none'; Codehighlighter1_475_754_Open_Text.style.display='none'; Codehighlighter1_475_754_Closed_Image.style.display='inline'; Codehighlighter1_475_754_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_475_754_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_475_754_Closed_Text.style.display='none'; Codehighlighter1_475_754_Open_Image.style.display='inline'; Codehighlighter1_475_754_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_475_754_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_475_754_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (GetCapture() </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">)<br /> </span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000">; <br /> </span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> oldMode;<br /> </span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    CDC </span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();<br /> </span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    oldMode </span><span style="color: #000000">=</span><span style="color: #000000"> pDC</span><span style="color: #000000">-></span><span style="color: #000000">GetROP2();<br /> </span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">SetROP2(R2_NOT);    <br /> </span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">MoveTo(m_ptPrev);<br /> </span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">LineTo(m_ptOld);<br /> </span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> </span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">MoveTo(m_ptPrev);<br /> </span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">LineTo(point);<br /> </span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    pDC</span><span style="color: #000000">-></span><span style="color: #000000">SetROP2(oldMode);   <br /> </span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    m_ptOld </span><span style="color: #000000">=</span><span style="color: #000000"> point;<br /> </span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    ReleaseDC(pDC);<br /> </span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">     q样Q绘制直U的效果和windows自带的绘囄序效果差不多了?br /> </span> </p> </span> <img src ="http://www.aygfsteel.com/wenhl5656/aggbug/232270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-10-03 23:38 <a href="http://www.aygfsteel.com/wenhl5656/archive/2008/10/03/232270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>/subsystem:windows ?/subsystem:console(转蝲)http://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232136.html爱吃鱼头爱吃鱼头Thu, 02 Oct 2008 15:15:00 GMThttp://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232136.htmlhttp://www.aygfsteel.com/wenhl5656/comments/232136.htmlhttp://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232136.html#Feedback0http://www.aygfsteel.com/wenhl5656/comments/commentRss/232136.htmlhttp://www.aygfsteel.com/wenhl5656/services/trackbacks/232136.htmlQ?a >/subsystem:windows ?/subsystem:console 

       操作pȝ装蝲应用E序后,做完初始化工作就转到E序的入口点执行。程序的默认入口点实际上是由q接E序讄的,不同的连接器选择的入口函C不尽相同。在VC++下,q接器对控制台程序设|的入口函数?mainCRTStartupQmainCRTStartup 再调用你自己~写?main 函数Q对囑Ş用户界面QGUIQ程序设|的入口函数?WinMainCRTStartupQW(xu)inMainCRTStartup 调用你自己写?WinMain 函数。而具体设|哪个入口点是由q接器的“/subsystem:”选项参数定的,它告诉操作系l如何运行编译生成的.EXE文g。可以指定四U方式:(x)“CONSOLE|WINDOWS|NATIVE|POSIX”如果q个选项参数的gؓ(f)“WINDOWS”Q则表示该应用程序运行时不需要控制台Q有兌接器参数选项的详l说明请参?MSDN 库?nbsp;

以下四种l合Q可以实现console和windows模式的؜合,可以辑ֈ不弹出DOSH口的效果,也可以达到在WindowsE序中向控制台输出printf信息了?br /> #pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )


int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)
{
     // ... ...
}

int main(void)
{
     // ... ...
}




爱吃鱼头 2008-10-02 23:15 发表评论
]]>
#pragma comment的一些体?/title><link>http://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232106.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Thu, 02 Oct 2008 08:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232106.html</guid><wfw:comment>http://www.aygfsteel.com/wenhl5656/comments/232106.html</wfw:comment><comments>http://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wenhl5656/comments/commentRss/232106.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wenhl5656/services/trackbacks/232106.html</trackback:ping><description><![CDATA[<p style="font-size: 12pt">(转蝲)<br /> <strong>#pragma comment(</strong> <span id="wmqeeuq" class="parameter">comment-type</span> [<strong>,"</strong><span id="wmqeeuq" class="parameter">commentstring</span><strong>"</strong>] <strong>)<br /> </strong>该宏攄一个注释到对象文g或者可执行文g?br /> <br /> <em>comment-type</em>是一个预定义的标识符Q指定注释的cdQ应该是<strong>compilerQ?/strong><strong>exestrQlibQlinker</strong>之一?br /> <span id="wmqeeuq" class="parameter">commentstring是一个提供ؓ(f)</span><em>comment-type</em>提供附加信息的字W串Q?br /> RemarksQ?br /> 1、compilerQ放|编译器的版本或者名字到一个对象文Ӟ该选项是被linker忽略的?br /> 2、exestrQ在以后的版本将被取消?br /> 3、libQ放|一个库搜烦记录到对象文件中Q这个类型应该是?span class="parameter">commentstringQ指定你要Liner搜烦的lib的名U和路径Q?br /> q个库的名字攑֜Object文g的默认库搜烦记录的后面,linker搜烦q个q个库就像你在命令行输入q个命o(h)一栗你可以<br /> 在一个源文g中设|多个库记录Q它们在object文g中的序和在源文件中的顺序一栗如果默认库和附加库的次序是需?br /> 区别的,使用Z~译开x防止默认库放到object模块?br /> 4、linkerQ指定一个连接选项Q这样就不用在命令行输入或者在开发环境中讄了?br /> 只有下面的linker选项能被传给Linker.<br /> </span></p> <ul> <li> <p><MSHELP:LINK tabindex="0" keywords="6AF7FF49-C170-4A13-97E2-2B9AE2DE20C9">/DEFAULTLIB</MSHELP:LINK></p> <li> <p><MSHELP:LINK tabindex="0" keywords="0920FB44-A472-4091-A8E6-73051F494CA0">/EXPORT</MSHELP:LINK></p> <li> <p><MSHELP:LINK tabindex="0" keywords="4A039677-360A-480F-BD0B-448E239B449C">/INCLUDE</MSHELP:LINK></p> <li> <p><MSHELP:LINK tabindex="0" keywords="e4b68313-33a2-4c3e-908e-ac2b9f7d6a73">/MANIFESTDEPENDENCY</MSHELP:LINK> </p> <li> <p><MSHELP:LINK tabindex="0" keywords="10FB20C2-0B3F-4C8D-98A8-F69AEDF03D52">/MERGE</MSHELP:LINK></p> <li> <p><MSHELP:LINK tabindex="0" keywords="92B69D81-E421-462E-B46F-7D0DFF9B9D16">/SECTION</MSHELP:LINK></p> </li> </ul> <pre>(1)/DEFAULTLIB:<em>library<br /> <br /> </em>/DEFAULTLIB 选项一?<em>library</em> d?LINK 在解析引用时搜烦的库列表。用 /DEFAULTLIB 指定的库在命令行上指定的库之后和 .obj 文g中指定的默认库之前被搜烦?br /> </pre> <p style="text-align: left">忽略所有默认库 (/NODEFAULTLIB) 选项重写 /DEFAULTLIB:library。如果在两者中指定了相同的 library 名称Q?span style="color: #080000">忽略?/span> (/NODEFAULTLIB:<em>library</em>) 选项重?/DEFAULTLIB:<em>library</em>?/p> <p style="text-align: left">(2)/EXPORT:<em>entryname</em>[,@<em>ordinal</em>[,NONAME]][,DATA]<br /> </p> <p>使用该选项Q可以从E序导出函数Q以便其他程序可以调用该函数。也可以导出数据。通常?DLL 中定义导出?em>entryname</em> 是调用程序要使用的函数或数据的名称?span class="parameter">ordinal</span> 在导中指定范围在 1 ?65,535 的烦引;如果没有指定 <span id="wmqeeuq" class="parameter">ordinal</span>Q则 LINK 分配一个?strong>NONAME</strong> 关键字只函数导Zؓ(f)序号Q没?<em>entryname</em>?/p> <p><strong>DATA </strong>关键字指定导出项为数据项。客L(fng)序中的数据项必须?<strong>extern __declspec(dllimport)</strong> 来声明?br /> 有三U导出定义的Ҏ(gu)Q按照徏议的使用序依次为:(x) </p> <ol> <li> <p>源代码中?<MSHELP:LINK tabindex="0" keywords="FF95B645-EF55-4E72-B848-DF44657B3208">__declspec(dllexport)</MSHELP:LINK></p> <li> <p>.def 文g中的 EXPORTS 语句</p> <li> <p>LINK 命o(h)中的 /EXPORT 规范</p> </li> </ol> <p>所有这三种Ҏ(gu)可以用在同一个程序中。LINK 在生成包含导出的E序时还创徏导入库,除非生成中用了 .exp 文g?br /> LINK 使用标识W的修饰形式。编译器在创?.obj 文g时修饰标识符。如?<em>entryname</em> 以其未修饰的形式指定l链接器Q与其在源代码中一PQ则 LINK 试囑֌配该名称。如果无法找到唯一的匹配名Uͼ?LINK 发出错误信息。当需要将标识W指定给链接器时Q请使用 Dumpbin 工具获取该标识符的修饰名形式?/p> <pre>(3)/INCLUDE:<em>symbol<br /> </em></pre> <p>/INCLUDE 选项通知链接器将指定的符h加到W号表?/p> <p>若要指定多个W号Q请在符号名UC间键入逗号 (,)、分?(;) 或空根{在命o(h)行上Q对每个W号指定一?/INCLUDE:<span id="wmqeeuq" class="parameter">symbol</span>?br /> 链接器通过包含符号定义的对象d到程序来解析 <span id="wmqeeuq" class="parameter">symbol</span>。该功能对于d含不?x)链接到E序的库对象非常有用。用该选项指定W号通过 /OPT:REF 重写该符L(fng)U除?/p> <pre><br /> <em><br /> </em>我们l常用到的是#pragma   commentQlibQ?*.lib"Q这cȝ?br /> #pragma   comment(lib,"Ws2_32.lib")表示链接Ws2_32.libq个库?  <br /> 和在工程讄里写上链入Ws2_32.lib的效果一P不过q种Ҏ(gu)写的   <br /> E序别h在用你的代码的时候就不用再设|工Esettings?/pre> <pre>#pragma comment(linker,"/SECTION:flag_data,RWS")</pre> <pre>可以׃n数据在动态链接库中的数据Q或者可以用来是应用E序只启动一ơ,注意Qflag_data与RWS之间不能有空|Q?/pre> <img src ="http://www.aygfsteel.com/wenhl5656/aggbug/232106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-10-02 16:36 <a href="http://www.aygfsteel.com/wenhl5656/archive/2008/10/02/232106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ucgui progresshttp://www.aygfsteel.com/wenhl5656/archive/2008/09/27/231392.html爱吃鱼头爱吃鱼头Fri, 26 Sep 2008 16:12:00 GMThttp://www.aygfsteel.com/wenhl5656/archive/2008/09/27/231392.htmlhttp://www.aygfsteel.com/wenhl5656/comments/231392.htmlhttp://www.aygfsteel.com/wenhl5656/archive/2008/09/27/231392.html#Feedback0http://www.aygfsteel.com/wenhl5656/comments/commentRss/231392.htmlhttp://www.aygfsteel.com/wenhl5656/services/trackbacks/231392.html是关于UCGUI的窗口界面编E,借用了windows中的事g机制  阅读全文

爱吃鱼头 2008-09-27 00:12 发表评论
]]>
C语言q算优先U?/title><link>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230693.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Tue, 23 Sep 2008 08:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230693.html</guid><wfw:comment>http://www.aygfsteel.com/wenhl5656/comments/230693.html</wfw:comment><comments>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wenhl5656/comments/commentRss/230693.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wenhl5656/services/trackbacks/230693.html</trackback:ping><description><![CDATA[<img height="441" alt="" src="http://www.aygfsteel.com/images/blogjava_net/wenhl5656/1.JPG" width="339" border="0" /> <img src ="http://www.aygfsteel.com/wenhl5656/aggbug/230693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-09-23 16:04 <a href="http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C语言宏定义技?/title><link>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230554.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Tue, 23 Sep 2008 01:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230554.html</guid><wfw:comment>http://www.aygfsteel.com/wenhl5656/comments/230554.html</wfw:comment><comments>http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230554.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wenhl5656/comments/commentRss/230554.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wenhl5656/services/trackbacks/230554.html</trackback:ping><description><![CDATA[C语言宏定义技巧(常用宏定义)  <br />   <br /> 写好C语言Q漂亮的宏定义很重要Q用宏定义可以防止出错Q提高可UL性,可读性,方便?nbsp;{等。下面列举一些成熟Y件中常用得宏定义。。。。。?<br /> <br />   <br /> <br /> 1Q防止一个头文g被重复包?<br /> <br /> #ifndef COMDEF_H <br /> <br /> #define COMDEF_H <br /> <br />   //头文件内?<br /> <br /> #endif <br /> <br /> 2Q重新定义一些类型,防止׃各种q_和编译器的不同,而生的cd字节数差异,方便UL?<br /> <br /> typedef  unsigned char      boolean;     /* Boolean value type. */ <br /> <br />   <br /> <br /> typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */ <br /> <br /> typedef  unsigned short     uint16;      /* Unsigned 16 bit value */ <br /> <br /> typedef  unsigned char      uint8;       /* Unsigned 8  bit value */ <br /> <br />   <br /> <br /> typedef  signed long int    int32;       /* Signed 32 bit value */ <br /> <br /> typedef  signed short       int16;       /* Signed 16 bit value */ <br /> <br /> typedef  signed char        int8;        /* Signed 8  bit value */ <br /> <br />   <br /> <br />   <br /> <br /> //下面的不使用 <br /> <br /> typedef  unsigned char     byte;         /* Unsigned 8  bit value type. */ <br /> <br /> typedef  unsigned short    word;         /* Unsinged 16 bit value type. */ <br /> <br /> typedef  unsigned long     dword;        /* Unsigned 32 bit value type. */ <br /> <br />   <br /> <br /> typedef  unsigned char     uint1;        /* Unsigned 8  bit value type. */ <br /> <br /> typedef  unsigned short    uint2;        /* Unsigned 16 bit value type. */ <br /> <br /> typedef  unsigned long     uint4;        /* Unsigned 32 bit value type. */ <br /> <br />   <br /> <br /> typedef  signed char       int1;         /* Signed 8  bit value type. */ <br /> <br /> typedef  signed short      int2;         /* Signed 16 bit value type. */ <br /> <br /> typedef  long int          int4;         /* Signed 32 bit value type. */ <br /> <br />   <br /> <br /> typedef  signed long       sint31;       /* Signed 32 bit value */ <br /> <br /> typedef  signed short      sint15;       /* Signed 16 bit value */ <br /> <br /> typedef  signed char       sint7;        /* Signed 8  bit value */ <br /> <br />   <br /> <br /> 3Q得到指定地址上的一个字节或?<br /> <br /> #define  MEM_B( x )  ( *( (byte *) (x) ) ) <br /> <br /> #define  MEM_W( x )  ( *( (word *) (x) ) ) <br /> <br /> 4Q求最大值和最?<br /> <br />    #define  MAX( x, y ) ( ((x) > (y)) ? (x) : (y) ) <br /> <br />    #define  MIN( x, y ) ( ((x) < (y)) ? (x) : (y) ) <br /> <br /> 5Q得C个field在结构体(struct)中的偏移?<br /> <br /> #define FPOS( type, field ) \ <br /> <br /> /*lint -e545 */ ( (dword) &(( type *) 0)-> field ) /*lint +e545 */ <br /> <br /> 6,得到一个结构体中field所占用的字节数 <br /> <br /> #define FSIZ( type, field ) sizeof( ((type *) 0)->field ) <br /> <br /> 7Q按照LSB格式把两个字节{化ؓ(f)一个Word <br /> <br /> #define  FLIPW( ray ) ( (((word) (ray)[0]) * 256) + (ray)[1] ) <br /> <br /> 8Q按照LSB格式把一个Word转化Z个字?<br /> <br /> #define  FLOPW( ray, val ) \ <br /> <br />   (ray)[0] = ((val) / 256); \ <br /> <br />   (ray)[1] = ((val) & 0xFF) <br /> <br /> 9Q得C个变量的地址Qword宽度Q?<br /> <br /> #define  B_PTR( var )  ( (byte *) (void *) &(var) ) <br /> <br /> #define  W_PTR( var )  ( (word *) (void *) &(var) ) <br /> <br /> 10Q得C个字的高位和低位字节 <br /> <br /> #define  WORD_LO(xxx)  ((byte) ((word)(xxx) & 255)) <br /> <br /> #define  WORD_HI(xxx)  ((byte) ((word)(xxx) >> 8)) <br /> <br /> 11Q返回一个比X大的最接近?的倍数 <br /> <br /> #define RND8( x )       ((((x) + 7) / 8 ) * 8 ) <br /> <br /> 12Q将一个字母{换ؓ(f)大写 <br /> <br /> #define  UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) ) <br /> <br /> 13Q判断字W是不是10q值的数字 <br /> <br /> #define  DECCHK( c ) ((c) >= '0' && (c) <= '9') <br /> <br /> 14Q判断字W是不是16q值的数字 <br /> <br /> #define  HEXCHK( c ) ( ((c) >= '0' && (c) <= '9') ||\ <br /> <br />                        ((c) >= 'A' && (c) <= 'F') ||\ <br /> <br /> ((c) >= 'a' && (c) <= 'f') ) <br /> <br /> 15Q防止溢出的一个方?<br /> <br /> #define  INC_SAT( val )  (val = ((val)+1 > (val)) ? (val)+1 : (val)) <br /> <br /> 16Q返回数l元素的个数 <br /> <br /> #define  ARR_SIZE( a )  ( sizeof( (a) ) / sizeof( (a[0]) ) ) <br /> <br /> 17Q返回一个无W号数n值MOD_BY_POWER_OF_TWO(X,n)=X%(2^n) <br /> <br /> #define MOD_BY_POWER_OF_TWO( val, mod_by ) \ <br /> <br />            ( (dword)(val) & (dword)((mod_by)-1) ) <br /> <br /> 18Q对于IOI间映射在存储空间的l构Q输入输出处?<br /> <br />   #define inp(port)         (*((volatile byte *) (port))) <br /> <br />   #define inpw(port)        (*((volatile word *) (port))) <br /> <br />   #define inpdw(port)       (*((volatile dword *)(port))) <br /> <br />    <br /> <br />   #define outp(port, val)   (*((volatile byte *) (port)) = ((byte) (val))) <br /> <br />   #define outpw(port, val)  (*((volatile word *) (port)) = ((word) (val))) <br /> <br />   #define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val))) <br /> <br /> [2005-9-9d]  <br /> <br /> 19,使用一些宏跟踪调试 <br /> <br /> A N S I标准说明了五个预定义的宏名。它们是Q?<br /> <br /> _ L I N E _ <br /> <br /> _ F I L E _ <br /> <br /> _ D A T E _ <br /> <br /> _ T I M E _ <br /> <br /> _ S T D C _ <br /> <br /> 如果~译不是标准的,则可能仅支持以上宏名中的几个Q或Ҏ(gu)不支持。记住编译程?<br /> <br /> 也许q提供其它预定义的宏名?<br /> <br /> _ L I N E _?qing)_ F I L E _宏指令在有关# l i n e的部分中已讨论,q里讨论其余的宏名?<br /> <br /> _ D AT E _宏指令含有Ş式ؓ(f)??q的Ԍ表示源文件被译C码时的日期?<br /> <br /> 源代码翻译到目标代码的时间作Z包含在_ T I M E _中。串形式为时Q分Q秒?<br /> <br /> 如果实现是标准的Q则宏_ S T D C _含有十进制常?。如果它含有M其它敎ͼ则实现是 <br /> <br /> 非标准的?<br /> <br /> 可以定义宏,例如: <br /> <br /> 当定义了_DEBUGQ输出数据信息和所在文件所在行 <br /> <br /> #ifdef _DEBUG <br /> <br /> #define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_) <br /> <br /> #else <br /> <br />       #define DEBUGMSG(msg,date)  <br /> <br /> #endif <br /> <br />   <br /> <br /> 20Q宏定义防止使用是错?<br /> <br /> 用小括号包含?<br /> <br /> 例如Q?define ADD(a,b) Qa+bQ?<br /> <br /> 用do{}while(0)语句包含多语句防止错?<br /> <br /> 例如Q?difne DO(a,b) a+b;\ <br /> <br />                    a++; <br /> <br /> 应用Ӟ(x)if(….) <br /> <br />           DO(a,b); //产生错误 <br /> <br />         else <br /> <br />          <br /> <br /> 解决Ҏ(gu): #difne DO(a,b) do{a+b;\ <br /> <br />                    a++;}while(0) <br /> <br />   <br /> 宏中"#"?##"的用?<br /> 一、一般用?<br /> 我们使用#把宏参数变ؓ(f)一个字W串,?#把两个宏参数贴合在一? <br /> 用法: <br /> Qi nclude<cstdio> <br /> Qi nclude<climits> <br /> using namespace std; <br /> <br /> #define STR(s)     #s <br /> #define CONS(a,b)  int(a##e##b) <br /> <br /> int main() <br /> { <br />     printf(STR(vck));           // 输出字符?vck" <br />     printf("%d\n", CONS(2,3));  // 2e3 输出:2000 <br />     return 0; <br /> } <br /> <br /> 二、当宏参数是另一个宏的时?<br /> 需要注意的是凡宏定义里有用'#'?##'的地方宏参数是不?x)再展开. <br /> <br /> 1, ?#'?##'的情?<br /> #define TOW      (2) <br /> #define MUL(a,b) (a*b) <br /> <br /> printf("%d*%d=%d\n", TOW, TOW, MUL(TOW,TOW)); <br /> q行的宏?x)被展开为:(x) <br /> printf("%d*%d=%d\n", (2), (2), ((2)*(2))); <br /> MUL里的参数TOW?x)被展开?2). <br /> <br /> 2, 当有'#'?##'的时?<br /> #define A          (2) <br /> #define STR(s)     #s <br /> #define CONS(a,b)  int(a##e##b) <br /> <br /> printf("int max: %s\n",  STR(INT_MAX));    // INT_MAX Qi nclude<climits> <br /> q行?x)被展开为:(x) <br /> printf("int max: %s\n", "INT_MAX"); <br /> <br /> printf("%s\n", CONS(A, A));               // compile error  <br /> q一行则是:(x) <br /> printf("%s\n", int(AeA)); <br /> <br /> INT_MAX和A都不?x)再被展开, 然而解册个问题的Ҏ(gu)很简? 加多一层中间{换宏. <br /> 加这层宏的用意是把所有宏的参数在q层里全部展开, 那么在{换宏里的那一个宏(_STR)p得到正确的宏参数. <br /> <br /> #define A           (2) <br /> #define _STR(s)     #s <br /> #define STR(s)      _STR(s)          // 转换?<br /> #define _CONS(a,b)  int(a##e##b) <br /> #define CONS(a,b)   _CONS(a,b)       // 转换?<br /> <br /> printf("int max: %s\n", STR(INT_MAX));          // INT_MAX,int型的最大|Z个变?nbsp;Qi nclude<climits> <br /> 输出? int max: 0x7fffffff <br /> STR(INT_MAX) -->  _STR(0x7fffffff) 然后再{换成字符Ԍ <br /> <br /> printf("%d\n", CONS(A, A)); <br /> 输出为:(x)200 <br /> CONS(A, A)  -->  _CONS((2), (2))  --> int((2)e(2)) <br /> <br /> 三?#'?##'的一些应用特?<br /> 1、合q匿名变量名 <br /> #define  ___ANONYMOUS1(type, var, line)  type  var##line <br /> #define  __ANONYMOUS0(type, line)  ___ANONYMOUS1(type, _anonymous, line) <br /> #define  ANONYMOUS(type)  __ANONYMOUS0(type, __LINE__) <br /> 例:(x)ANONYMOUS(static int);  ? static int _anonymous70;  70表示该行行号Q?<br /> W一层:(x)ANONYMOUS(static int);  -->  __ANONYMOUS0(static int, __LINE__); <br /> W二层:(x)                        -->  ___ANONYMOUS1(static int, _anonymous, 70); <br /> W三层:(x)                        -->  static int  _anonymous70; <br /> xơ只能解开当前层的宏,所以__LINE__在第二层才能被解开Q?<br /> <br /> 2、填充结?<br /> #define  FILL(a)   {a, #a} <br /> <br /> enum IDD{OPEN, CLOSE}; <br /> typedef struct MSG{ <br />   IDD id; <br />   const char * msg; <br /> }MSG; <br /> <br /> MSG _msg[] = {FILL(OPEN), FILL(CLOSE)}; <br /> 相当于:(x) <br /> MSG _msg[] = {{OPEN, "OPEN"}, <br />               {CLOSE, "CLOSE"}}; <br /> <br /> 3、记录文件名 <br /> #define  _GET_FILE_NAME(f)   #f <br /> #define  GET_FILE_NAME(f)    _GET_FILE_NAME(f) <br /> static char  FILE_NAME[] = GET_FILE_NAME(__FILE__); <br /> <br /> 4、得C个数值类型所对应的字W串~冲大小 <br /> #define  _TYPE_BUF_SIZE(type)  sizeof #type <br /> #define  TYPE_BUF_SIZE(type)   _TYPE_BUF_SIZE(type) <br /> char  buf[TYPE_BUF_SIZE(INT_MAX)]; <br />      -->  char  buf[_TYPE_BUF_SIZE(0x7fffffff)]; <br />      -->  char  buf[sizeof "0x7fffffff"]; <br /> q里相当于:(x) <br /> <img src ="http://www.aygfsteel.com/wenhl5656/aggbug/230554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-09-23 09:11 <a href="http://www.aygfsteel.com/wenhl5656/archive/2008/09/23/230554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>facedetect心得http://www.aygfsteel.com/wenhl5656/archive/2008/09/10/228216.html爱吃鱼头爱吃鱼头Wed, 10 Sep 2008 13:23:00 GMThttp://www.aygfsteel.com/wenhl5656/archive/2008/09/10/228216.htmlhttp://www.aygfsteel.com/wenhl5656/comments/228216.htmlhttp://www.aygfsteel.com/wenhl5656/archive/2008/09/10/228216.html#Feedback0http://www.aygfsteel.com/wenhl5656/comments/commentRss/228216.htmlhttp://www.aygfsteel.com/wenhl5656/services/trackbacks/228216.html        在写q些代码Ӟ参考了|上很多例子。但E序要在嵌入式系l上q行Q因此可用的库就受到很大限制Q很多功能都需要自q码实玎ͼ比如jpg的解码,文g的读入和写出。从中我学到了如何将jpg解码?4位的bmp图,如何?4位的bmp转换为灰度图Q也学到了bmp图数据布局是从底左方向开始的。一开始没有发现这一点,D保存的图片全是颠倒的?br />        另外QlineBytes或widthStep(openCV)q个参数很重要,是指每一行数据的字节数。刚开始没有处理好Q导致保存的囄是歪的?br />        q有其他的,比如Gray  = (BYTE)(Red*0.299+Green*0.587+(Blue  + 0.5)*0.114); q是真彩图{换ؓ(f)灰度囄一个公式,效果挺好的,在网上查了很久才扑ֈ(没学囑փ处理是亏啊)?br />        的法是基于AdaBoost的,不过大囄E稍有些慢,q需要试试优化一下。而且代码修改q后Q检结果有炚w题,很多像h脸的景物也会(x)被误认ؓ(f)?:-(?br />

爱吃鱼头 2008-09-10 21:23 发表评论
]]>
վ֩ģ壺 ƽ| | º| | ̩| | | | Ӣ| ͬ| ˷| ڰ| | | | ƽ| | | | Դ| ɳ| | ʹ| ӽ| | հ| ʯ| | ľ| ͼľ| ֬| | | ½| ׼| ƽ| | ɽ| Դ| żҿ| ˰|