2012年11月25日
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的位置