• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            VC學(xué)習(xí)筆記9:幾個(gè)指針

            為了在視類中能夠調(diào)用放在其它類中的數(shù)據(jù)或函數(shù),應(yīng)該先獲得相應(yīng)類的指針。

            1、指向文檔類(CxxDoc)的指針:
            CxxDoc*pDoc = GetDocument();//文檔指針
            則用pDoc->xxxx的方法可在視類中訪問文檔類中的變量和函數(shù)。

            2、指向應(yīng)用程序類(CxxApp)的指針:
            CxxApp*app = (CxxApp *)AfxGetApp();//應(yīng)用程序指針
            用app->xxxx的方法可在文檔類或視類中調(diào)用CxxApp中放置的數(shù)據(jù)了。
            我一般把文檔和視公用的數(shù)據(jù)放在CxxApp類中,再用以上方法訪問。

            3、指向主框架(CMainFrame)的指針:
            CFrameWnd *pFrameWnd=GetParentFrame();//獲取框架窗口指針
            用pFrameWnd->xxxx訪問CWnd類的函數(shù)。
            這種方法多用于獲取窗口的位置、大小等操作,用于視類。

            4、指向某一控件的指針:
            如:CWnd *pEdit = GetDlgItem(IDC_EDIT1); //獲取編輯控件指針
            IDC_EDIT1為控件ID號。
            這主要是為了能修改控件大小、位置,獲取控件風(fēng)格等。

            5、指向狀態(tài)條的指針:
            CStatusBar* pStatus;//狀態(tài)欄指針
            pStatus=(CStatusBar *)(app->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR));
            app為上面的應(yīng)用程序指針。
            這主要是為了更改狀態(tài)欄中顯示的內(nèi)容。


            VC學(xué)習(xí)筆記10:狀態(tài)欄:

            1、在狀態(tài)欄中顯示提示:
            CxxApp*app = (CxxApp *)AfxGetApp();//應(yīng)用程序指針
            CStatusBar* pStatus;//狀態(tài)欄指針
            if(pStatus)
            {
            pStatus=(CStatusBar *)(app->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR));
            pStatus->SetPaneText(0,str);//0為狀態(tài)欄窗格號,str為顯示的字符串
            }

            2、在狀態(tài)欄中增加窗格:

            下例中增加了三個(gè)新窗格:
            (1)修改MainFrm.cpp:

            static UINT indicators[] =
            {
            ID_SEPARATOR,// status line indicator

            ID_SEPARATOR,//新增窗格1:放置總字節(jié)數(shù)
            ID_SEPARATOR,//新增窗格2:半角字?jǐn)?shù)
            ID_SEPARATOR,//新增窗格3:全角字?jǐn)?shù)

            ID_INDICATOR_CAPS,
            ID_INDICATOR_NUM,
            ID_INDICATOR_SCRL,
            };

            int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
            {
            if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
            return -1;

            if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
            | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
            !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
            {
            TRACE0("Failed to create toolbar\n");
            return -1;// fail to create
            }

            if (!m_wndStatusBar.Create(this) ||
            !m_wndStatusBar.SetIndicators(indicators,
            sizeof(indicators)/sizeof(UINT)))
            {
            TRACE0("Failed to create status bar\n");
            return -1;// fail to create
            }

            m_wndStatusBar.SetPaneInfo(1,ID_SEPARATOR,0,95); //設(shè)置新增窗格1的寬度
            m_wndStatusBar.SetPaneInfo(2,ID_SEPARATOR,0,100); //設(shè)置新增窗格2的寬度
            m_wndStatusBar.SetPaneInfo(3,ID_SEPARATOR,0,100); //設(shè)置新增窗格3的寬度

            …………
            }

            (2)在新窗格中顯示內(nèi)容

            以下程序?yàn)橐曨愔酗@示狀態(tài)信息的部分,
            CStatusBar *pStatus=(CStatusBar *)AfxGetApp()->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR);
            if(pStatus)
            {
            CString str;
            str.Format("字節(jié)數(shù):%d",len);
            pStatus->SetPaneText(1,str);//在窗格1顯示內(nèi)容
            str.Format("半角字符:%d",chnum);
            pStatus->SetPaneText(2,str);//在窗格2顯示內(nèi)容
            str.Format("全角字符:%d",hannum/2);
            pStatus->SetPaneText(3,str);//在窗格3顯示內(nèi)容
            }


            VC學(xué)習(xí)筆記11:設(shè)置程序窗口的初始大小:

            在應(yīng)用程序類(CxxAPP)的 InitInstance 函數(shù)中加入:
            m_pMainWnd->SetWindowPos(NULL,x,y,Width,Height,SWP_NOMOVE);
            Width為窗口寬度,Height為窗口高度
            SWP_NOMOVE表示忽略位置(x,y)。

            如:
            BOOL CDzyApp::InitInstance()
            {
            AfxEnableControlContainer();

            ……

            // The one and only window has been initialized, so show and update it.
            m_pMainWnd->SetWindowPos(NULL,0,0,750,555,SWP_NOMOVE);//設(shè)置窗口的初始大小為750*555

            m_pMainWnd->ShowWindow(SW_SHOW);
            m_pMainWnd->UpdateWindow();

            return TRUE;
            }


            VC學(xué)習(xí)筆記12:如何讓窗口一啟動(dòng)就最大化?

            方法一:

            將應(yīng)用程序類(CxxAPP)的 InitInstance 函數(shù)中的

            m_pMainWnd->ShowWindow(SW_SHOW); 改為
            m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); //讓窗口一啟動(dòng)就最大化

            例:
            BOOL CMyEditApp::InitInstance()
            {
            …………

            m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

            …………
            }

            方法二:

            在應(yīng)用程序類(CxxAPP)的 InitInstance 函數(shù)中設(shè)定 m_nCmdShow的取值.
            m_nCmdShow=SW_SHOWMAXIMIZED; //最大化
            m_nCmdShow=SW_SHOWMINIMIZED; //最小化
            m_nCmdShow=SW_SHOWNORMAL; //正常方式

            例:
            BOOL CMyEditApp::InitInstance()
            {
            AfxEnableControlContainer();
            m_nCmdShow=SW_SHOWMAXIMIZED; //最大化
            // Standard initialization
            // If you are not using these features and wish to reduce the size
            // of your final executable, you should remove from the following
            // the specific initialization routines you do not need.

            #ifdef _AFXDLL
            Enable3dControls(); // Call this when using MFC in a shared DLL
            #else
            Enable3dControlsStatic(); // Call this when linking to MFC statically
            #endif

            …………
            }


            VC學(xué)習(xí)筆記13:使窗口打開時(shí)處于屏幕正中:

            在MainFrm.cpp文件的OnCreate函數(shù)中加入:
            CenterWindow( GetDesktopWindow() );
            即可。

            如:
            int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
            {
            if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
            return -1;
            ……

            // TODO: Delete these three lines if you don't want the toolbar to
            // be dockable
            m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
            EnableDocking(CBRS_ALIGN_ANY);
            DockControlBar(&m_wndToolBar);

            CenterWindow( GetDesktopWindow() ); //使窗口打開時(shí)處于屏幕正中

            return 0;
            }


            VC學(xué)習(xí)筆記14:修改程序窗口標(biāo)題:

            窗口標(biāo)題一般形式為:文檔標(biāo)題 - 程序標(biāo)題

            1、修改文檔標(biāo)題:
            文檔標(biāo)題是由工程中相應(yīng)的文檔類所控制的,因此我們可以在文檔中利用SetTitle()函數(shù)來改變文檔標(biāo)題。
            在文檔類的OnNewDocument()函數(shù)中加入語句:
            BOOL CWEditDoc::OnNewDocument()
            {
            if (!CDocument::OnNewDocument())
            return FALSE;

            // TODO: add reinitialization code here
            // (SDI documents will reuse this document)
            SetTitle("未命名");//設(shè)置文檔標(biāo)題

            return TRUE;
            }

            2、修改程序標(biāo)題:
            在MainFrm.cpp的PreCreateWindow()函數(shù)中加入:
            BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
            {
            if( !CFrameWnd::PreCreateWindow(cs) )
            return FALSE;
            // TODO: Modify the Window class or styles here by modifying
            //the CREATESTRUCT cs
            m_strTitle = _T("記事本");//設(shè)置程序標(biāo)題

            cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
            | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;

            return TRUE;
            }
            以上兩條比較適合于窗口標(biāo)題是固定值的情況,或用來設(shè)置初始時(shí)的窗口標(biāo)題。若標(biāo)題經(jīng)常改變,可采用CWnd類的SetWindowText()函數(shù)。

            3、修改整個(gè)標(biāo)題:
            AfxGetMainWnd()->SetWindowText(m_Title);
            m_Title為新標(biāo)題的字符串變量

            一般把該語句放在應(yīng)用程序類的 InitInstance 函數(shù)中。

            例:
            BOOL CMyEditApp::InitInstance()
            {
            AfxEnableControlContainer();

            …………

            m_pMainWnd->ShowWindow(SW_SHOW);
            m_pMainWnd->UpdateWindow();

            AfxGetMainWnd()->SetWindowText("未命名.txt - 記事本"); //修改標(biāo)題

            return TRUE;
            }
            該函數(shù)也可在視圖類中隨時(shí)修改標(biāo)題。
            Posted on 2005-11-15 14:53 艾凡赫 閱讀(1472) 評論(0)  編輯 收藏 引用 所屬分類: MFC技術(shù)
            99久久婷婷国产综合精品草原| 亚洲精品乱码久久久久久蜜桃| 久久99国产综合精品女同| 精品永久久福利一区二区| 蜜桃麻豆www久久| 欧美日韩精品久久久免费观看| 狠狠88综合久久久久综合网 | 久久久精品2019免费观看| 777米奇久久最新地址| 综合久久一区二区三区 | 久久激情五月丁香伊人| 狠狠色丁香久久婷婷综合| 国产精品免费久久久久久久久| 久久亚洲AV成人无码软件| 国产日韩久久久精品影院首页| 日本欧美久久久久免费播放网| 久久久久国产精品三级网| 久久狠狠色狠狠色综合| 18岁日韩内射颜射午夜久久成人| 久久不见久久见免费影院www日本| 国内精品久久久久影院一蜜桃| 亚洲综合日韩久久成人AV| 国产精品久久新婚兰兰| 亚洲欧美成人久久综合中文网| 精品久久人人妻人人做精品| 久久99精品综合国产首页| 国产精品对白刺激久久久| 996久久国产精品线观看| 久久超乳爆乳中文字幕| 亚洲AV成人无码久久精品老人| 久久久久国产精品嫩草影院| 三级三级久久三级久久| 精品熟女少妇AV免费久久| 伊人久久综合无码成人网| 99久久精品国产一区二区 | 国产成人精品久久| 精品99久久aaa一级毛片| 欧美成a人片免费看久久| 久久人人爽人人人人爽AV| 97香蕉久久夜色精品国产 | 久久精品国产亚洲精品|