• <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>
            隨筆 - 30  文章 - 67  trackbacks - 0
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(8)

            隨筆分類

            隨筆檔案

            文章檔案

            收藏夾

            Oops

            搜索

            •  

            積分與排名

            • 積分 - 85788
            • 排名 - 276

            最新評論

            閱讀排行榜

            評論排行榜

            最近需要做2D游戲編譯器,就學(xué)習(xí)了下MFC,那老師的話來說他就是簡單粗暴,

            說道簡單,我認(rèn)為不過就是使用熟練的就簡單了,但是里面的原理還真不簡單,最近也在看《深入淺出MFC》,作者真的很厲害,幽默的言語間就把MFC大卸八塊,想想大陸的書好的真不多。

            實(shí)現(xiàn)分割條,主要使用的是CSplitterWnd,這個(gè)類,如果你想讓分割條不動,那么你就得重寫一個(gè)類,并且繼承CSplitterWnd這個(gè)類,并且重寫OnLButtonDown()的這個(gè)方法,只要你不實(shí)現(xiàn)這個(gè)方法,那么分割條就不會動了。知道了這個(gè)原理,那么對其它控件就是一樣的了。。。 是不是很簡單


            如果你想利用VS手動添加一個(gè)類,讓它繼承CSplitterWnd這個(gè)類,那么就得說對不起,MS好像沒有把所有的類都放進(jìn)去,我用的VS2008,不知道VS2010是什么情況,但是也不要著急嘛, 可以想想MFC的那張繼承大表,現(xiàn)在想想確實(shí)很大啊,有耐心的數(shù)數(shù)吧,話說現(xiàn)在的人都很浮躁啊,找到CSplitterWnd了嗎,找到他父親,看他父親在MFC的VS中類生成的器中有沒,沒有再它父親的父親 找到了沒??, 這個(gè)辦法是通用的,還有就是一個(gè)簡單的辦法,就是我們用的基本的控件,大多數(shù)都是從CWnd繼承的,那么我們就直接選擇CWnd了。。。


            下面看下生成的結(jié)果:

            //Splitter.h

            #pragma once


            // CSplitter

            class CSplitter : public CWnd
            {
             DECLARE_DYNAMIC(CSplitter)

            public:
             CSplitter();
             virtual ~CSplitter();

            protected:
             DECLARE_MESSAGE_MAP()
            };


            //Splitter.cpp
            // Splitter.cpp : 實(shí)現(xiàn)文件
            //

            #include "stdafx.h"
            #include "2DTerrainEditor0.1.h"
            #include "Splitter.h"


            // CSplitter

            IMPLEMENT_DYNAMIC(CSplitter, CWnd)

            CSplitter::CSplitter()
            {

            }

            CSplitter::~CSplitter()
            {
            }


            BEGIN_MESSAGE_MAP(CSplitter, CWnd)
            END_MESSAGE_MAP()

            // CSplitter 消息處理程序

            注意到上面的紅字了沒, 我們需要的是CSplitterWnd 是吧,那么就好辦了吧,
            把Cwnd換成CSplitterWnd就可以了。這樣我們的這個(gè)基礎(chǔ)類就完成了。
            你要想分割條不動,我上面說的有。


            下面說說:完成了那么就得謝謝MainFrame了

            實(shí)現(xiàn)這個(gè)我們首先需要給CMainFrame添加一個(gè)成員變量(CSplitter) m_splitter
            同時(shí)要實(shí)現(xiàn) virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);方法

            下面就是方法的具體描述了:

            BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
            {
             
            // TODO: 在此添加專用代碼和/或調(diào)用基類

              
            if(!m_splitter.CreateStatic(this12))
             {
              TRACE0(
            "Failed to create m_splitter\n");
              
            return FALSE;
             }

             CRect rect;
             GetClientRect(
            &rect);

             
            //Left View
             if(!m_splitter.CreateView(00, RUNTIME_CLASS(CLeftTreeView),
              CSize((rect.right 
            - rect.left)*0.30), pContext))
             {
              TRACE0(
            "Failed to Create the Left View");
              
            return FALSE;
             }

             
            //Right View
             if(!m_splitter.CreateView(01, RUNTIME_CLASS(CMy2DTerrainEditor01View),
              CSize((rect.right 
            - rect.left)*0.70), pContext))
             {
              TRACE0(
            "Failed to Create the Left View");
              
            return FALSE;
             }

             SetActiveView((CView
            *)m_splitter.GetPane(00));

             m_splitter.ShowWindow(SW_SHOW);
             m_splitter.UpdateWindow();

             
            return TRUE;
            }


             



            需要注意的呢還得創(chuàng)建視圖,在上面你可以發(fā)現(xiàn)這個(gè)問題,
            我使用了一個(gè)自動生成的CMy2DTerrainEditor01View, 還有我利用VS自動創(chuàng)建的CLeftTreeView,
            這個(gè)例子我想創(chuàng)建一個(gè)做視圖為一個(gè)樹形的視圖,右邊想畫一個(gè)地圖。

            大概就這樣了
             

            posted on 2011-04-05 11:02 Cunch 閱讀(1141) 評論(0)  編輯 收藏 引用 所屬分類: MFC
            久久人人爽人人爽人人片AV麻豆| 国产精品综合久久第一页| 久久久久无码精品国产| 久久免费看黄a级毛片| 亚洲欧美日韩中文久久| 97久久精品午夜一区二区| 99久久夜色精品国产网站| 日韩一区二区三区视频久久| 亚洲中文字幕久久精品无码喷水| 亚洲午夜久久久影院| 亚洲精品乱码久久久久久久久久久久 | 久久久久亚洲av无码专区导航| 精品熟女少妇AV免费久久 | 久久午夜伦鲁片免费无码| 国产成年无码久久久久毛片| 国产三级精品久久| 国内精品伊人久久久久AV影院| 国产精品一区二区久久精品无码| 伊人久久成人成综合网222| 亚洲AV日韩精品久久久久久久| 2020最新久久久视精品爱| 久久综合久久性久99毛片| 久久亚洲精精品中文字幕| 天天做夜夜做久久做狠狠| 久久精品国产影库免费看| 国内精品久久久久影院薰衣草| 久久精品亚洲男人的天堂| 亚洲精品乱码久久久久66| 久久久91人妻无码精品蜜桃HD| 久久久精品午夜免费不卡| 伊人色综合久久天天人守人婷| 国产精品va久久久久久久| 亚洲AV无码1区2区久久| 久久久久亚洲av成人网人人软件 | 久久久久精品国产亚洲AV无码| 亚洲欧美日韩精品久久| 久久99国内精品自在现线| 久久人人爽人人爽人人片AV不 | 夜夜亚洲天天久久| 久久精品人人做人人妻人人玩| 97精品伊人久久大香线蕉|