VC++的心得

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這個函數讓控件自適應,但是如果控件畫的太大有問題,解決方法畫小點
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章