VC 小技巧集锦(转载)

  • 无标题栏对话框移动

为对话框添加左键点击事件,代码如下:

   1:  void CPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point)  
   2:  {  
   3:      // TODO: 在此添加消息处理程序代码和/或调用默认值  
   4:      SendMessage(WM_SYSCOMMAND,0xF012,0);  
   5:      CDialog::OnLButtonDown(nFlags, point);  
   6:  }

完成后,就可以拉动对话框移动。0xF012 = SC_MOVE | HTCAPTION

  • 制作自己的图形按钮

首先先建一个对话框程序,此处取名叫ButtonTest,在对话框资源上摆放一个button按钮,在button属性标签中,勾选Owner draw

image

然后再类中添加一个CBitmapButton类的对象,此处取名叫m_btTest.

image

然后在CButtonTestDlg::OnInitDialog函数中添加如下代码:

image

 

IDB_BITMAP1,IDB_MAP3为实现插入的位图,如图所示:

imageimage

最后效果图,按钮可以实现按下和正常两种状态:

image

  • TAB控件的使用

转载:http://www.cnblogs.com/passzh/archive/2011/01/29/1947461.html

TAB控件必须和子对话框相结合,才能进行使用。

1.首先创建一个对话框应用程序。

2.在该对话框上放置Tab控件,并添加Control变量为m_tab。

3.再插入一个Dialog,设ID值为IDD_CH1。并设置属性,“样式”为“下层”(“Style”为“Child”),“边框”为“无”(Border为None)。

4.在父对话框中添加WM_INITDIALOG消息,函数为OnInitDialog。在此函数中添加如下代码:

   1:  m_tab.InsertItem(0,_T("登记入库"),0); 
   2:   
   3:  ch1.Create(IDD_CH1,GetDlgItem(IDC_TAB1));
   4:   
   5:  CRect rect;
   6:   
   7:  m_tab.GetClientRect(&rect); 
   8:   
   9:  rect.top+=40;
  10:   
  11:  rect.bottom-=10; 
  12:   
  13:  rect.left+=10; 
  14:   
  15:  rect.right-=10; 
  16:   
  17:  ch1.MoveWindow(&rect); 
  18:   
  19:  ch1.ShowWindow(SW_SHOW);

如果要让TAB随着点击显示不同的子Dialog,那么为TAB添加TCN_SELCHANGE消息。

代码为:

   1:  void CStoreMan::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
   2:   
   3:  {
   4:   
   5:  // TODO: Add your control notification handler code here
   6:   
   7:  //当点击了Tab的按钮
   8:   
   9:  int num=m_tab.GetCurSel();
  10:   
  11:  switch(num)
  12:   
  13:  {
  14:   
  15:  case 0:ch1.ShowWindow(SW_SHOW);
  16:   
  17:  ch2.ShowWindow(SW_HIDE);
  18:   
  19:  break;
  20:   
  21:  case 1:ch1.ShowWindow(SW_HIDE);
  22:   
  23:  ch2.ShowWindow(SW_SHOW);
  24:   
  25:  }
  26:   
  27:  *pResult = 0;
  28:   
  29:  }
  • “static_cast”: 无法从“void (__thiscall CMyNetChatDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

把原来的消息函数原型改为:
afx_msg   LRESULT   OnMyMessage(WPARAM   wParam,   LPARAM   lParam);
LRESULT   CMyWnd::OnMyMessage(WPARAM   wParam,   LPARAM   lParam)
{
    return   0;
}

posted @ 2013-01-19 11:45  阿Q程序员  阅读(181)  评论(0编辑  收藏  举报