• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        將視頻演示作為應用程序的打開封面

        將視頻演示作為應用程序的打開封面

        更新時間:2019-06-21 文章作者:未知 信息來源:網絡 閱讀次數:

        作者: 哈爾濱 潘景巖

        --- 在啟動應用程序時演示一段生動的視頻畫面,會使您的軟件增色不少。應該做到演示結束后自動開始主程序;或者在演示過程中,在屏幕上任意位置按下鼠標鍵立即結束演示,并開始主程序。利用Windows提供的 MCIWnd窗口類及宏命令,可方便地創建和開啟視頻窗口,并開始演示。
        ---- 需要解決四個問題:
        ---- 首先,在應用程序視類的構造函數中創建視頻窗口,在初始化函數中開始播放;
        ---- 其次,建立一個計時器。利用Class Vizard為WM_TIMER增加消息處理函數,以自動關閉視頻窗口并顯示應用程序主窗口;
        ---- 另外,為了便于從MCIWnd子類化窗口的鼠標消息處理函數中,對應用程序視類的計時器處理函數進行控制,引入一個布爾型全局變量,用來標示是否可以關閉視頻窗口;
        ---- 最后,也是最關鍵的,應用程序可以截獲發生在主窗口內的鼠標消息,卻無法截獲發生在視頻窗口內的鼠標消息,因為Windows已將視頻窗口的鼠標消息處理函數封裝在MCIWnd窗口類中。所以,為了截獲發生在視頻窗口內的鼠標信息,需要重新定義MCIWnd窗口消息處理函數。
        ---- 具體操作步驟如下(在Visual C++6.0環境下調試通過):
        ---- (1)在應用程序類的頭文件中加入布爾型全局變量:
        class CMyApp : public CWinApp
        {
        public:
        bool m_CanClose;
        ...
        }
          
        (2)在應用程序類的構造函數中對這一標志變量進行初始化:
        CMyApp::CMyApp()
        {
        m_CanClose=false;
        ...
        }
          
        (3)在CMyView類的頭文件中,加入成員変量:
        private:
        HWND m_VideoWnd; //視頻窗口句柄
        long m_VideoLength; //視頻放映總長度
          
        (4)在MyView.CPP文件中加入以下內容:
        WNDPROC OldProc; //保存原映射函數
        LRESULT CALLBACK NewProc(HWND,UINT,
        WPARAM,LPARAM);
        //新映射函數
        ...
        CMyView::CMyView()
        {
        CString filename("D:\\Video\\Cover.avi");
        //建立視頻窗口,并將句柄保存在m_VideoWnd中:
        m_VideoWnd = MCIWndCreate(
        this- >GetSafeHwnd(),
        AfxGetInstanceHandle(),
        WS_POPUP|WS_VISIBLE|
        MCIWNDF_NOPLAYBAR|
        MCIWNDF_NOMENU,
        filename);
        //使視頻窗口在屏幕上居中顯示:
        RECT rect;
        int sx,sy;
        ::GetWindowRect(m_VideoWnd,&rect);
        sx=(::GetSystemMetrics(SM_CXSCREEN)
        -rect.right+rect.left)/2;
        sy=(::GetSystemMetrics(SM_CYSCREEN)
        -rect.bottom+rect.top)/2;
        ::SetWindowPos(m_VideoWnd,HWND_TOPMOST,sx,
        sy,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
        }
          
        void CMyView::OnInitialUpdate()
        {
        CView::OnInitialUpdate();
        /* 調用GetWindowLong函數得到
        m_VideoWnd窗口原消息處理函數的入口地址,
        并保存在OldProc中。*/
        OldProc=(WNDPROC) ::GetWindowLong(m_VideoWnd,
        GWL_WNDPROC);
        /* 調用SetWindowLong函數將
        m_VideoWnd窗口消息處理函數的入口地址改為NewProc */
        ::SetWindowLong(m_VideoWnd,GWL_WNDPROC,
        (LONG)NewProc);
        m_VideoLength = MCIWndGetLength(m_VideoWnd);
        //得到視頻放映總長度
        MCIWndPlay(m_VideoWnd);
        //播放視頻文件
        SetTimer(1,20,NULL);
        //建立計時器,每20毫秒激活一次OnTimer函數
          
        }
          
        void CJapanView::OnTimer(UINT nIDEvent)
        {
        CJapanApp *app=(CJapanApp *)AfxGetApp();
        if(MCIWndGetPosition(m_VideoWnd) >=m_VideoLength
        //自動播放結束
        ||app-> m_CanClose==true)
        //人為按下鼠標左鍵結束
        {
        KillTimer(1); //撤消計時器
        MCIWndDestroy(m_VideoWnd); //撤消視頻窗口
        AfxGetMainWnd()- >ShowWindow(SW_SHOWMAXIMIZED);
        //顯示主窗口
        }
        CRecordView::OnTimer(nIDEvent);
        }
          
        LRESULT CALLBACK NewProc(HWND hWnd,UINT message,
        WPARAM wParam,LPARAM lParam)
        {
        if(message==WM_LBUTTONDOWN) //鼠標左鍵被按下
        {
        CJapanApp *app=(CJapanApp *)AfxGetApp();
        app- >m_CanClose=true; //可以關閉視頻窗口
        }
        //如果不是鼠標左鍵按下消息,則調用原處理函數:
        return CallWindowProc(OldProc,hWnd,
        message,wParam,lParam);
        }

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 大地资源免费更新在线播放| 激情综合色五月丁香六月亚洲| 好男人看视频免费2019中文| 全亚洲最新黄色特级网站 | 亚洲av成人一区二区三区观看在线| 欧洲精品码一区二区三区免费看| 国产午夜成人免费看片无遮挡 | 中文字幕无码亚洲欧洲日韩| 99视频在线精品免费观看6| 国产精品亚洲片在线va| 国产精品成人免费视频网站京东| 亚洲无人区码一二三码区别图片| 成人毛片18女人毛片免费| 亚洲国产精品成人精品无码区| 免费日本一区二区| 亚洲成aⅴ人在线观看| 成年人视频在线观看免费| 99亚洲男女激情在线观看| 亚洲中久无码不卡永久在线观看| 99免费在线视频| 亚洲人成网站色在线入口| 精品国产污污免费网站入口在线| 成人av免费电影| 大片免费观看92在线视频线视频| 午夜电影免费观看| 免费VA在线观看无码| 亚洲人成色77777| 青娱乐免费在线视频| 美女被羞羞网站免费下载| 国产免费一区二区三区| 亚洲乱码国产乱码精华| 亚洲一区二区精品视频| 99热在线免费播放| 亚洲欧洲AV无码专区| 最新亚洲成av人免费看| 国产乱子精品免费视观看片| 羞羞的视频在线免费观看| 亚洲激情在线观看| 波多野结衣久久高清免费| 中国亚洲呦女专区| 国产亚洲精品资在线|