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

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

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

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

        更新時間:2019-06-21 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

        作者: 哈爾濱 潘景巖

        --- 在啟動應用程序時演示一段生動的視頻畫面,會使您的軟件增色不少。應該做到演示結束后自動開始主程序;或者在演示過程中,在屏幕上任意位置按下鼠標鍵立即結束演示,并開始主程序。利用Windows提供的 MCIWnd窗口類及宏命令,可方便地創(chuàng)建和開啟視頻窗口,并開始演示。
        ---- 需要解決四個問題:
        ---- 首先,在應用程序視類的構造函數(shù)中創(chuàng)建視頻窗口,在初始化函數(shù)中開始播放;
        ---- 其次,建立一個計時器。利用Class Vizard為WM_TIMER增加消息處理函數(shù),以自動關閉視頻窗口并顯示應用程序主窗口;
        ---- 另外,為了便于從MCIWnd子類化窗口的鼠標消息處理函數(shù)中,對應用程序視類的計時器處理函數(shù)進行控制,引入一個布爾型全局變量,用來標示是否可以關閉視頻窗口;
        ---- 最后,也是最關鍵的,應用程序可以截獲發(fā)生在主窗口內(nèi)的鼠標消息,卻無法截獲發(fā)生在視頻窗口內(nèi)的鼠標消息,因為Windows已將視頻窗口的鼠標消息處理函數(shù)封裝在MCIWnd窗口類中。所以,為了截獲發(fā)生在視頻窗口內(nèi)的鼠標信息,需要重新定義MCIWnd窗口消息處理函數(shù)。
        ---- 具體操作步驟如下(在Visual C++6.0環(huán)境下調(diào)試通過):
        ---- (1)在應用程序類的頭文件中加入布爾型全局變量:
        class CMyApp : public CWinApp
        {
        public:
        bool m_CanClose;
        ...
        }
          
        (2)在應用程序類的構造函數(shù)中對這一標志變量進行初始化:
        CMyApp::CMyApp()
        {
        m_CanClose=false;
        ...
        }
          
        (3)在CMyView類的頭文件中,加入成員変量:
        private:
        HWND m_VideoWnd; //視頻窗口句柄
        long m_VideoLength; //視頻放映總長度
          
        (4)在MyView.CPP文件中加入以下內(nèi)容:
        WNDPROC OldProc; //保存原映射函數(shù)
        LRESULT CALLBACK NewProc(HWND,UINT,
        WPARAM,LPARAM);
        //新映射函數(shù)
        ...
        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();
        /* 調(diào)用GetWindowLong函數(shù)得到
        m_VideoWnd窗口原消息處理函數(shù)的入口地址,
        并保存在OldProc中。*/
        OldProc=(WNDPROC) ::GetWindowLong(m_VideoWnd,
        GWL_WNDPROC);
        /* 調(diào)用SetWindowLong函數(shù)將
        m_VideoWnd窗口消息處理函數(shù)的入口地址改為NewProc */
        ::SetWindowLong(m_VideoWnd,GWL_WNDPROC,
        (LONG)NewProc);
        m_VideoLength = MCIWndGetLength(m_VideoWnd);
        //得到視頻放映總長度
        MCIWndPlay(m_VideoWnd);
        //播放視頻文件
        SetTimer(1,20,NULL);
        //建立計時器,每20毫秒激活一次OnTimer函數(shù)
          
        }
          
        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; //可以關閉視頻窗口
        }
        //如果不是鼠標左鍵按下消息,則調(diào)用原處理函數(shù):
        return CallWindowProc(OldProc,hWnd,
        message,wParam,lParam);
        }

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

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 1区2区3区产品乱码免费| 亚洲精华国产精华精华液网站| 亚洲国产综合精品中文字幕 | 国产亚洲精品国产福利在线观看| 国产精品亚洲专区无码牛牛| a级毛片免费网站| 无码成A毛片免费| 四虎永久在线精品免费网址| 亚洲成A∨人片天堂网无码| 亚洲成人在线网站| 亚洲国产欧美一区二区三区| baoyu122.永久免费视频| 桃子视频在线观看高清免费完整| 免费国产怡红院在线观看| 久久精品亚洲视频| 久久水蜜桃亚洲AV无码精品| 国产免费AV片在线观看| 日本大片在线看黄a∨免费| 亚洲AV无码一区二区三区系列| 亚洲熟女乱色一区二区三区| 伊人免费在线观看| 在线a毛片免费视频观看| 亚洲欧洲无码AV电影在线观看| 亚洲色偷精品一区二区三区| 日本在线看片免费| 四虎影永久在线高清免费| 亚洲欧洲高清有无| 野花香在线视频免费观看大全 | 免费无码一区二区三区| 日本免费一区尤物| 91大神亚洲影视在线| 一级片在线免费看| 在线中文高清资源免费观看| 亚洲最大福利视频网站| 国产免费久久久久久无码| 国产成人青青热久免费精品| 亚洲人成网站在线观看播放动漫 | 亚洲欧洲日产国码av系列天堂| 亚洲av成人无码网站…| 波多野结衣在线免费视频| 亚洲成a人片在线观看无码专区|