﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-wbscut-随笔分类-windows程序设计</title><link>http://www.cppblog.com/wbscut/category/1647.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 19:49:24 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 19:49:24 GMT</pubDate><ttl>60</ttl><item><title>禁止标题栏鼠标的一些动作</title><link>http://www.cppblog.com/wbscut/archive/2006/05/22/7483.html</link><dc:creator>汪波的C++乐园</dc:creator><author>汪波的C++乐园</author><pubDate>Mon, 22 May 2006 02:43:00 GMT</pubDate><guid>http://www.cppblog.com/wbscut/archive/2006/05/22/7483.html</guid><wfw:comment>http://www.cppblog.com/wbscut/comments/7483.html</wfw:comment><comments>http://www.cppblog.com/wbscut/archive/2006/05/22/7483.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/wbscut/comments/commentRss/7483.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wbscut/services/trackbacks/7483.html</trackback:ping><description><![CDATA[
		<p>我希望程序运行时最大化显示，而且不希望之后鼠标在标题栏双击，单击移动等一些动作。<br />主要用到重载窗口非客户区的一些函数<br />其操作如下：<br />第一：在 <br /> //{{AFX_MSG(CMainFrame)<br /> //}}AFX_MSG<br />中间添加<br /> afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);<br /> afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);<br /> afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);<br />第二：在消息映射中<br />BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)<br /> //{{AFX_MSG_MAP(CMainFrame)<br /> //}}AFX_MSG_MAP<br />END_MESSAGE_MAP()<br />添加<br /> ON_WM_NCLBUTTONDBLCLK()<br /> ON_WM_NCLBUTTONDOWN()<br /> ON_WM_NCRBUTTONDOWN()<br />第三：在源文件中实现这些函数<br />void CMainFrame::OnNcLButtonDblClk(UINT nHitTest, CPoint point)<br />{<br /> if(nHitTest!=HTCAPTION)<br />  CWnd::OnNcLButtonDblClk(nHitTest, point);<br /> else<br />  return;<br />}</p>
		<p>void CMainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)<br />{<br /> if(nHitTest!=HTCAPTION)<br />  CWnd::OnNcLButtonDblClk(nHitTest, point);<br /> else<br />  return;<br />}</p>
		<p>void CMainFrame::OnNcRButtonDown(UINT nHitTest, CPoint point)<br />{<br /> if(nHitTest!=HTCAPTION)<br />  CWnd::OnNcLButtonDblClk(nHitTest, point);<br /> else<br />  return;<br />}<br />这样就大功告成啦！！</p>
<img src ="http://www.cppblog.com/wbscut/aggbug/7483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wbscut/" target="_blank">汪波的C++乐园</a> 2006-05-22 10:43 <a href="http://www.cppblog.com/wbscut/archive/2006/05/22/7483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于对话框的重绘</title><link>http://www.cppblog.com/wbscut/archive/2006/05/05/6651.html</link><dc:creator>汪波的C++乐园</dc:creator><author>汪波的C++乐园</author><pubDate>Fri, 05 May 2006 11:03:00 GMT</pubDate><guid>http://www.cppblog.com/wbscut/archive/2006/05/05/6651.html</guid><wfw:comment>http://www.cppblog.com/wbscut/comments/6651.html</wfw:comment><comments>http://www.cppblog.com/wbscut/archive/2006/05/05/6651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wbscut/comments/commentRss/6651.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wbscut/services/trackbacks/6651.html</trackback:ping><description><![CDATA[
		<p>都知道在对话框最小化或将对话框拖出屏幕再将其激活（显示）或再拖回来时，如果需要让原来对话框中有的图显示出来，那就得进行重绘。大家也都知道重载CDialog的OnPaint（）函数。但实际用的时候还是有很多的问题。其中我碰到一个问题就是：若将CDialog::OnPaint（）<br />注释掉，CPU占用竟然达到100％，所以我只好将其保留，然后在其后面加上我要重绘的内容。<br />void CTestDlgDlg::OnPaint() <br />{<br /> if (IsIconic())<br />  {<br />  CPaintDC dc(this); // device context for painting <br />  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); <br />  // Center icon in client rectangle<br />  int cxIcon = GetSystemMetrics(SM_CXICON);<br />  int cyIcon = GetSystemMetrics(SM_CYICON);<br />  CRect rect;<br />  GetClientRect(&amp;rect);<br />  int x = (rect.Width() - cxIcon + 1) / 2;<br />  int y = (rect.Height() - cyIcon + 1) / 2; <br />  // Draw the icon<br />  dc.DrawIcon(x, y, m_hIcon);  <br /> }<br /> else<br /> { <br />  CDialog::OnPaint();<br />  if(m_Dib.m_pData!=NULL)<br />  {<br />   CRect rc;<br />   ((CWnd*)(GetDlgItem(IDC_SOURCEIMG)))-&gt;GetClientRect(&amp;rc);<br />   CPaintDC m_dc(GetDlgItem(IDC_SOURCEIMG));<br />   m_dc.SetStretchBltMode(COLORONCOLOR);<br />   m_dc.FillSolidRect(rc,RGB(100,100,100));<br />   StretchDIBits(m_dc.m_hDC,0,0,m_Dib.m_pBmpInfoHeader-&gt;biWidth,m_Dib.m_pBmpInfoHeader-&gt;biHeight,0,0,m_Dib.m_pBmpInfoHeader-&gt;biWidth,m_Dib.m_pBmpInfoHeader-&gt;biHeight,m_Dib.m_pData,m_Dib.m_pBmpInfo,DIB_RGB_COLORS,SRCCOPY);<br />  }<br /> } </p>
		<p>}<br />这里的   m_dc.FillSolidRect(rc,RGB(100,100,100));是重绘picture的背景颜色，不知为什么在运行一开始其原来的背景就被刷掉了，只好自己在这里重绘！！<br />但我今天刚看来别人的一个例子，他将CDialog：：OnPaint（）注释掉，CPU却正常，不知为什么！！</p>
<img src ="http://www.cppblog.com/wbscut/aggbug/6651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wbscut/" target="_blank">汪波的C++乐园</a> 2006-05-05 19:03 <a href="http://www.cppblog.com/wbscut/archive/2006/05/05/6651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>