wbscut

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  4 随笔 :: 0 文章 :: 4 评论 :: 0 Trackbacks

2007年6月4日 #

题注:今天师妹提到Blog,说我好久没更新了,所以决定继续写点东西,权当饭后调侃之用,你可以笑笑骂骂,想想评评。。。
                                               程序人生,人生程序(1)
        写了几年的程序,突然发现他和人生是那么的相似,有时甚至会想,这宇宙万物是不是在某种程度上都有其自相似性啊,也许。
        一个人从呱呱坠地到离开这个世界,所有的经历似乎都可以在一个进程的生命周期内找到影子。人一来到世界就好像一个进程
被调入内存,开始执行,人生的路程曲径通幽,程序的运行亦是分支复杂,人是社会的人,总被其身边的事物影响着,而程序也是,
他总是生存在一个系统环境下,并被其他进程或事件所影响,人会生病,程序也会,任何程序都不能肯定的说没有bug,只是不知道
会在何时何地因什么而爆发而已,其实人对生病的预知也很有限,不过有医生,程序也有,以此延伸,程序与人生,人生与程序都有
相对应的地方,越想还越多!
        人有其理想,程序也有其存在的目的,一个程序总是为某个“理想”而存在的,人的理想有“正”与“邪”,程序就更是这样了。
我们可以看到,有很多“正派”的程序在为人们服务着,为建设和谐社会也好,为最终实现共产主义也好,在最高理想上,他和人是
统一的。他们可以为这个最高理想夜以继日的干着活,人似乎在这方面有有些汗颜了。另外就是那些“邪派”的程序了,那些黑客
程序、病毒程序等等,人人都很痛恨他们,他们总在破坏着“他人”的美好生活,一会把你的帐号偷走了,更猖狂的病毒还会“杀人
放火”,真是可恶,当然在程序社会里也产生了相关的“执法监督”部门,我们的防火墙和杀毒程序就充当着这样的角色。
(待续。。。)
    

posted @ 2007-06-04 14:10 汪波的C++乐园 阅读(134) | 评论 (1)编辑 收藏

2006年5月22日 #

我希望程序运行时最大化显示,而且不希望之后鼠标在标题栏双击,单击移动等一些动作。
主要用到重载窗口非客户区的一些函数
其操作如下:
第一:在 
 //{{AFX_MSG(CMainFrame)
 //}}AFX_MSG
中间添加
 afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
 afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
 afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
第二:在消息映射中
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
 //{{AFX_MSG_MAP(CMainFrame)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()
添加
 ON_WM_NCLBUTTONDBLCLK()
 ON_WM_NCLBUTTONDOWN()
 ON_WM_NCRBUTTONDOWN()
第三:在源文件中实现这些函数
void CMainFrame::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
{
 if(nHitTest!=HTCAPTION)
  CWnd::OnNcLButtonDblClk(nHitTest, point);
 else
  return;
}

void CMainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
 if(nHitTest!=HTCAPTION)
  CWnd::OnNcLButtonDblClk(nHitTest, point);
 else
  return;
}

void CMainFrame::OnNcRButtonDown(UINT nHitTest, CPoint point)
{
 if(nHitTest!=HTCAPTION)
  CWnd::OnNcLButtonDblClk(nHitTest, point);
 else
  return;
}
这样就大功告成啦!!

posted @ 2006-05-22 10:43 汪波的C++乐园 阅读(360) | 评论 (1)编辑 收藏

2006年5月5日 #

都知道在对话框最小化或将对话框拖出屏幕再将其激活(显示)或再拖回来时,如果需要让原来对话框中有的图显示出来,那就得进行重绘。大家也都知道重载CDialog的OnPaint()函数。但实际用的时候还是有很多的问题。其中我碰到一个问题就是:若将CDialog::OnPaint()
注释掉,CPU占用竟然达到100%,所以我只好将其保留,然后在其后面加上我要重绘的内容。
void CTestDlgDlg::OnPaint()
{
 if (IsIconic())
  {
  CPaintDC dc(this); // device context for painting 
  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 
  // Center icon in client rectangle
  int cxIcon = GetSystemMetrics(SM_CXICON);
  int cyIcon = GetSystemMetrics(SM_CYICON);
  CRect rect;
  GetClientRect(&rect);
  int x = (rect.Width() - cxIcon + 1) / 2;
  int y = (rect.Height() - cyIcon + 1) / 2; 
  // Draw the icon
  dc.DrawIcon(x, y, m_hIcon);  
 }
 else
 { 
  CDialog::OnPaint();
  if(m_Dib.m_pData!=NULL)
  {
   CRect rc;
   ((CWnd*)(GetDlgItem(IDC_SOURCEIMG)))->GetClientRect(&rc);
   CPaintDC m_dc(GetDlgItem(IDC_SOURCEIMG));
   m_dc.SetStretchBltMode(COLORONCOLOR);
   m_dc.FillSolidRect(rc,RGB(100,100,100));
   StretchDIBits(m_dc.m_hDC,0,0,m_Dib.m_pBmpInfoHeader->biWidth,m_Dib.m_pBmpInfoHeader->biHeight,0,0,m_Dib.m_pBmpInfoHeader->biWidth,m_Dib.m_pBmpInfoHeader->biHeight,m_Dib.m_pData,m_Dib.m_pBmpInfo,DIB_RGB_COLORS,SRCCOPY);
  }
 } 

}
这里的   m_dc.FillSolidRect(rc,RGB(100,100,100));是重绘picture的背景颜色,不知为什么在运行一开始其原来的背景就被刷掉了,只好自己在这里重绘!!
但我今天刚看来别人的一个例子,他将CDialog::OnPaint()注释掉,CPU却正常,不知为什么!!

posted @ 2006-05-05 19:03 汪波的C++乐园 阅读(2393) | 评论 (0)编辑 收藏

2006年5月4日 #

今天终于将CDIB类完成了,功能比较完善!!
在此期间,比较深入的了解了BITMAPINFO结构
对于第一个成员BITMAPINFOHEADER bmiHeader,大家都很清楚它的含义
但是对于第二个成员:RGBQUAD          bmiColors[1];
我一直不是很理解,最近跟踪结果才知道,bmiColors是颜色表的首地址
指向第一个RGBQUAD类型的索引值
如果没有颜色表,则该数组的首地址为NULL
所以BITMAPINFO中并不包含所有的颜色表索引
具体的颜色表索引个数要计算才能知道!
posted @ 2006-05-04 15:03 汪波的C++乐园 阅读(189) | 评论 (2)编辑 收藏

仅列出标题