vc++工作筆記1

 
1)    透明位圖按鈕
在對話框上添加一個按鈕,定義按鈕的風格爲BS_OWNERDRAW(自畫風格),添加一個按鈕類繼承於CButton,重載虛函數virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);這個函數的作用就是在改變按鈕。可以變成ICON,也可以變成位圖,要想改變按鈕的背景還必須執行消息WM_ ERASEBKGND的消息函數OnEraseBkgnd(CDC* pDC),在此函數設備內顯示圖片。
2)        嵌套窗體的實現
嵌套窗體可以使兩個窗體分開來寫各自的功能,然後把這兩個窗體融合在第三個窗體內,可以使功能開發更加清晰。首先這兩個窗體必需是第三個窗體的成員變量,即在第三個窗體類中定義這兩個窗體類的成員,如
              CDialogue1 m_cDialogue1;
              CDialogue1 m_cDialogue2;
在初始化對話框時或着在你要添加窗體的函數中實現一下代碼:
//添加第一個窗體
       m_cDialogue1.Create(IDD_DIALOG1,this);//創建窗體
m_cDialogue1.MoveWindow(nPosX1,nPosY1,nWidth,nHeight,TRUE);//定位窗體
      m_cDialogue1.ShowWindow(SW_SHOW);//顯示窗體
 
//添加第二個窗體
m_cDialogue2.Create(IDD_DIALOG2,this);//創建窗體
m_cDialogue2.MoveWindow(nPosX2,nPosY2,nWidth,nHeight,TRUE);//定位窗體
      m_cDialogue2.ShowWindow(SW_SHOW);//顯示窗體
即可實現嵌套窗體
3)   在對話框窗體上打印文字
在對話框窗體上顯示文字,在實現WM_PAINT消息的OnPaint()函數中實現一下類似的代碼:
       CClientDC dc1(this);/定義客戶區域顯示設備
       CFont mFont;//定義一個類字體變量
       dc1.SetTextColor(crColor);//設置字體的顏色
       dc1.SetBkMode(TRANSPARENT);//設置顯示文字的背景透明
       VERIFY(mFont.CreateFont(
            30, 30, 0, 0, FW_HEAVY, false, FALSE,
            0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,       
            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,            
            DEFAULT_PITCH | FF_SWISS, "宋體"));//創建字體的大小30X30,宋體,不是斜體
       CFont * pOldFont;
    pOldFont = dc1.SelectObject( &mFont );//把文字載入設備
       dc1.TextOut(0,30,szNum);//打印文字
       UpdateWindow();
在視頻上不斷的顯示數字,視頻會不斷的更新窗體,導致最開始打印的在對話框上數字被視頻更新,如何讓視頻上不斷的顯示數字,一個最簡單的方法就是定義一個定時器把上述過程寫在一個函數裏,定時器不斷地調用這個函數,但是這樣也有缺點,就是當定時器很多時,定時器執行很多函數,導致這個過程變慢,字體在視頻上顯示就是不斷閃爍,定時器內執行的程序很少時,就看不出來閃爍。
  4)在視頻上添加按鈕
                     直接在視頻中添加按鈕,視頻會不斷的更新窗體,導致按鈕會被更新的視頻隱埋,如何在視頻上一直顯示按鈕,人工實現控件的更新,如下代碼:
                     CButton m_Button;//定義一個按鈕成員
                     m_Button.GetClientRect(rect);//獲得按鈕的客戶區域
                     m_Button.InvalidateRect(rect,true);//更新按鈕
但是執行一次的話,按鈕還是會只出現一次,最簡單的方法還是把此過程寫在定時器中,不斷的執行按鈕更新,還是一樣的問題如果定時器內執行的過程過多的話,按鈕會出現閃爍的現象,所以不要在定時器裏寫太多的執行過程。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章