VC++的心得

来源:互联网 发布:什么软件可以看港片 编辑:程序博客网 时间:2024/04/16 12:53

2012年11月25日

在对话框下添加一个spin control,控制edit的数值:
1,试用消息处理函数ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, &CDlg::OnDeltaposSpin1)
2,在消息处理函数里面添加
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
if (-1==pNMUpDown->iDelta)
。。。。
OnInitDialog();
*pResult = 0;

2012年11月27日

①怎样在程序开始的时候让它最大化?
②vc++做出来的exe文件在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能? 
③如何在显示窗口时,使最大化按钮变灰?

①在App类里的C…App::InitInstance()中把m_pMainWnd->ShowWindow(SW_SHOW)改成m_pMainWnd->ShowWindow(SW_MAXIMIZE);
②在CreateWidnow时用WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 风格.
  ③ 第一种方法:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 

if( !CFrameWnd::PreCreateWindow(cs) ) 
return FALSE; 
// TODO: Modify the Window class or styles here by modifying 
// the CREATESTRUCT cs 
// disable the maxmini box 
cs.style &= ~WS_MAXIMIZEBOX; 
return TRUE; 
}
第二种方法:
CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE); 
     int x=pMenu->GetMenuItemCount( ); 
     UINT pID=pMenu->GetMenuItemID(x-1); 
     pMenu->EnableMenuItem(pID, MF_DISABLED);
第三种方法:
ModifyStyle(WS_MAXIMIZEBOX, 0); 
这个函数也可以是最大化按钮失效! 
并且可以在程序中动态的改变窗口的风格

2012年11月29日

添加消息处理流程

1. .h
protected:
afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
2. .cpp
BEGIN_MESSAGE_MAP(*****, CDialog)
//{{AFX_MSG_MAP(CT_NCAreaChangeDlg)
ON_WM_NCLBUTTONDBLCLK()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
3. .cpp
void ****::OnNcLButtonDblClk(UINT nHitTest, CPoint point) 
{
return;
CDialog::OnNcLButtonDblClk(nHitTest,point);
}

2012年11月30日

在单文档视图里面添加滑动条?

1,首先在AppWizard里面添加toolbar并设置好;

2,新增一个类CBottomBar,继承CToolBar,并包涵CSliderCtrl成员变量,并在MainFrm.h里面新类型变量

    CBottomBar  m_BottomBar;

3,在MainFrm.cpp的OnCreate函数里面按照前面添加生产这个toolbar

if (!m_BottomBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_BottomBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建滑动条\n");
return -1;      // 未能创建
}

4,在这个toolbar上面生成滑动条,先获得toolbar上面按钮的rect,然后create即可

       CRect rect;
m_BottomBar.GetToolBarCtrl().GetRect(IDR_SLIDER2,&rect);
 
rect.left   +=   10;  
if   (!m_BottomBar.m_sliderExpoTime.Create(   
WS_CHILD| WS_VISIBLE | CBRS_SIZE_FIXED & TBS_HORZ  , 
rect,   &m_BottomBar,   IDR_SLIDER))   
{   
TRACE0("Failed   to   create   slider\n");   
return   FALSE;   

这个GetItemRect函数也可以获得rectangular的位置

2012年12月3日

visual studio是一款很好的IDE,重载和定义消息用这个键,OnHScroll可以使slider键实现,2010版对于MFC框架有了更新,当设计一款可以拖动和浮动的控件的时候使用CDockablePane这个东东,比如想设计一个dialog思路如下:
1,先定义一个类继承CDock1继承CDockablePane
2,在MainFrame里面create,m_Dock1.Create(_T("234"),this,CRect(0,0,200,200),true,IDD_FRMVIEW1,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI),这时候容器搭好
3,在容器里面添加我们需要的东东(步骤如上),注意一点用onsize这个函数让控件自适应,但是如果控件画的太大有问题,解决方法画小点