• <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>
            隨筆 - 505  文章 - 1034  trackbacks - 0
            <2007年9月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456


            子曾經(jīng)曰過(guò):編程無(wú)他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(lèi)(649)

            隨筆檔案(505)

            相冊(cè)

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 911893
            • 排名 - 14

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            索性這幾個(gè)UI庫(kù)都試試 ^_^

            截圖


            重點(diǎn)
             1)取得句柄
                  
            pSystem->InitD3D((HWND)this->Handle.ToPointer());

             2)刷新畫(huà)面也跟Qt一樣靠定時(shí)器:拖個(gè)Timer(注意:默認(rèn)是Enabled:false,改成true),雙擊下,改下面的函數(shù)
                 
                private: System::Void timerRender_Tick(System::Object^  sender, System::EventArgs^  e) {
                             
            if (pSystem)
                             {
                                 pSystem
            ->Render();
                             }
                         }

                   本來(lái)我是打Run的主意的
            Application::Run(gcnew MainForm());
            寫(xiě)個(gè)類(lèi)繼承自Application,然后override這個(gè)Run,在其中調(diào)用Render(),試了下,編譯出錯(cuò)
            錯(cuò)誤    1    error C3246: “EditorApplication”: 無(wú)法從“System::Windows::Forms::Application”繼承,因?yàn)樗驯宦暶鳛?#8220;sealed”    f:\Practise\Practise_2005\WorldEditor\WorldEditor.cpp    9    
            Application類(lèi)不能被繼承!!!

            看了下xoyojank寫(xiě)的 原創(chuàng) DirectX in C++/CLI ,也用定時(shí)器好了。

            3)項(xiàng)目配置: 公共語(yǔ)言運(yùn)行庫(kù)支持(/clr)    多線(xiàn)程調(diào)試 DLL (/MDd)


            posted on 2008-11-26 23:35 七星重劍 閱讀(1220) 評(píng)論(6)  編輯 收藏 引用 所屬分類(lèi): PL--c/c++Game GraphicsIDE -- visual c++

            FeedBack:
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2008-11-27 21:39 xoyojank
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2008-11-28 14:20 七星重劍
             
            protected override void WndProc(ref Message m)

            {

               
            if (m.Msg == 0x000F)

               {

                  Frame();

                  
            this.Invalidate();

               }

               
            else

                  
            base.WndProc(ref m);

            }

             
            [DllImport("user32.dll")]

            public static extern int SendNotifyMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 



            protected override void WndProc(ref Message m)

            {

            if (m.Msg == 0x000F)

            {

               Frame();

               SendNotifyMessage(
            this.Handle, 0x000F, IntPtr.Zero, IntPtr.Zero);

            }

            else

               
            base.WndProc(ref m);

            }

              回復(fù)  更多評(píng)論
              
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2008-11-28 14:21 七星重劍
            這種方式是最好的?
              回復(fù)  更多評(píng)論
              
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2010-04-19 15:46 七星重劍
            http://blogs.msdn.com/tmiller/archive/2005/05/05/415008.aspx

            My last post on render loops (hopefully)..
            The most common topic on my blog returns again. This time it will be brief as all I'm going to to do now is show you the render loop the June'05 SDK will be using. A coworker in another group came up with this markedly simple, yet deceptively effective loop for that groups projects. I liked it so much, i'm sharing it with everyone else. =)

            The basic loop (slightly modified from his original version and the version in the new SDK for ease of reading):

            public void MainLoop()
            {
            // Hook the application's idle event
            System.Windows.Forms.Application.Idle += new EventHandler(OnApplicationIdle);
            System.Windows.Forms.Application.Run(myForm);
            }

            private void OnApplicationIdle(object sender, EventArgs e)
            {
            while (AppStillIdle)
            {
            // Render a frame during idle time (no messages are waiting)
            UpdateEnvironment();
            Render3DEnvironment();
            }
            }

            private bool AppStillIdle
            {
            get
            {
            NativeMethods.Message msg;
            return !NativeMethods.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
            }
            }


            And the declarations for those two native methods members:

            [StructLayout(LayoutKind.Sequential)]
            public struct Message
            {
            public IntPtr hWnd;
            public WindowMessage msg;
            public IntPtr wParam;
            public IntPtr lParam;
            public uint time;
            public System.Drawing.Point p;
            }

            [System.Security.SuppressUnmanagedCodeSecurity] // We won't use this maliciously
            [DllImport("User32.dll", CharSet=CharSet.Auto)]
            public static extern bool PeekMessage(out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags);


            ------

            Simple, elegant, effective. No extra allocations, no extra collections, it just works.. The Idle event fires when there's no messages in the queue, and then the handler keeps looping continuously until a message does appear, in which case it stops.. Once all the messages are handled, the idle event is fired again, and the process starts over.

              回復(fù)  更多評(píng)論
              
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2010-04-19 15:55 七星重劍
            現(xiàn)在見(jiàn)到這種方式,把控件invalidate了讓其重新繪制。

            Application.Idle += new EventHandler(form.Application_Idle);
            Application.Run(form);

            Invalidator.Shutdown();
            MFramework.Shutdown();
            }

            private void Application_Idle(object sender, EventArgs e)
            {
            if (this.Visible &&
            this.WindowState != FormWindowState.Minimized &&
            Form.ActiveForm == this)
            {
            Invalidator.Instance.Update(true);
            }
            }

            在控件的protected override void OnPaint(PaintEventArgs e)里繪制3D內(nèi)容。  回復(fù)  更多評(píng)論
              
            # re: 每天30分鐘寫(xiě)Editor--(2)在CLR窗口里用D3D畫(huà)轉(zhuǎn)動(dòng)的三角形 2010-10-31 18:42 funcman
            Void OnIdle(Object^ sender, EventArgs^ e) {
            MSG msg;
            while( !PeekMessage(&msg, 0, 0, 0, 0) ) {
            Render();
            }
            }

            //...

            int main(array<System::String^>^ args) {
            //...

            EventHandler^ idle = gcnew EventHandler(OnIdle);
            Application::Idle += idle;
            Application::Run(gcnew MainForm());
            Application::Idle -= idle;

            return 0;
            }  回復(fù)  更多評(píng)論
              
            久久久午夜精品福利内容| 性欧美大战久久久久久久久| 色综合久久中文色婷婷| 99久久精品国产一区二区三区| 精品久久久久久国产牛牛app| 亚洲精品午夜国产va久久| 久久精品黄AA片一区二区三区| Xx性欧美肥妇精品久久久久久 | 区久久AAA片69亚洲| 久久亚洲春色中文字幕久久久 | 99久久超碰中文字幕伊人| 久久精品一区二区国产| 亚洲国产香蕉人人爽成AV片久久| 久久精品国产亚洲AV嫖农村妇女| 国内精品久久久久国产盗摄| 久久综合综合久久综合| 狠狠色丁香久久婷婷综合_中| 国产叼嘿久久精品久久| 久久久久久久97| 久久妇女高潮几次MBA| 亚洲精品高清一二区久久| 国产午夜电影久久| 91视频国产91久久久| 97久久婷婷五月综合色d啪蜜芽| 91久久香蕉国产熟女线看| 国内精品伊人久久久久av一坑| 亚洲伊人久久综合中文成人网| 国产精品gz久久久| 91久久香蕉国产熟女线看| 久久伊人精品青青草原高清| 97久久香蕉国产线看观看| 久久久精品国产sm调教网站| 久久精品国产乱子伦| 久久久精品国产免大香伊| 免费久久人人爽人人爽av| 91麻豆国产精品91久久久| 久久乐国产综合亚洲精品| 99蜜桃臀久久久欧美精品网站| A级毛片无码久久精品免费| 亚洲乱码中文字幕久久孕妇黑人| 久久久久久久波多野结衣高潮|