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
然后再类中添加一个CBitmapButton类的对象,此处取名叫m_btTest.
然后在CButtonTestDlg::OnInitDialog函数中添加如下代码:
IDB_BITMAP1,IDB_MAP3为实现插入的位图,如图所示:
最后效果图,按钮可以实现按下和正常两种状态:
- 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;
}