程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 輕松實現類MSDN 2002界面(2)

輕松實現類MSDN 2002界面(2)

編輯:關於VC++

前段時間在VC知識庫發表了《輕松實現類MSDN2002界面》,僅僅實現了標簽頁的拖放、停靠、浮動等功能,而上面的圖釘按鈕也只是一個假的^_^。通過參考codeproject.com/docking/pinnabledock.asp的代碼對程序進行了加強。現在已經可以實現自動隱藏了!!!效果圖如下。(比較匆忙,程序還有很多不令人滿意的地方,有待改進。上周剛接到新任務,不能繼續做了,只好請大家來完善了,希望你把修改後的代碼發我一份,謝謝)

圖一

下面,我將一步步介紹怎樣使用 DockPage、AutoHideBar。

一、通過AppWizard使用默認選項生成一個SDI界面工程。把src目錄拷貝到你的工程文件夾下。

在菜單Project->Add to project->Files將六個文件加入工程中。在stdafx.h文件中加上:

#define WM_AUTOHIDE_ON    WM_USER+1
#include ".\src\sizecbar.h"
#include ".\src\AutoHideBar.h"

二、修改 MainFrame 的繼承關系。

頭文件修改為:class CMainFrame : public CautoHideFrame

cpp文件修改:IMPLEMENT_DYNCREATE(CMainFrame, CAutoHideFrame)

BEGIN_MESSAGE_MAP(CMainFrame, CAutoHideFrame)

三、 聲明DockPageBar:

CDockPageBar    m_wndDockPageBar

在OnCreate創建DockPageBar:

if (!m_wndDockPageBar.Create(_T("DockPageBar"), this, CSize(230,260),TRUE,123))
  {
    TRACE0("Failed to create DockPageBar.\n");
    return -1;
  }
  m_wndDockPageBar.SetBarStyle(m_wndDockPageBar.GetBarStyle() |
    CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  m_wndDockPageBar.EnableDocking (CBRS_ALIGN_ANY);

允許Frame停靠:

EnableDocking(CBRS_ALIGN_ANY);

將DockPageBar停靠到左邊:

DockControlBar(&m_wndDockPageBar, AFX_IDW_DOCKBAR_LEFT);

四、好了,停靠 Bar 已經創建好了,並且具有了自動隱藏功能。下面你就可以忘停靠條裡添加標簽頁了!!

if (!m_wndEdit.Create(WS_CHILD|WS_VISIBLE|
      ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL,
    CRect(0,0,0,0), this, 123))
    return -1;
  m_wndDockPageBar.AddPage(&m_wndEdit,"Edit",IDI_INDEX);

OK,編譯執行就可以了!!就這麼簡單。至於實現原理就不在這裡講了,有幸趣的話可以看源碼,不過源碼有點亂,現在實在是沒有時間整理了!!自動隱藏功能的實現代碼沒有加注釋,抱歉!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved