posts - 25, comments - 69, trackbacks - 0, articles - 2

          vc的對(duì)話框中,如果直接用picturebox作為對(duì)話框的背景,則其他控件會(huì)被擋住。經(jīng)過(guò)高手指點(diǎn),重載了WM_ERASEBKGND消息處理函數(shù),很少的解決了這個(gè)問(wèn)題。而且按照這個(gè)思路,可以很方便的為dialog增加動(dòng)態(tài)的skin:

          聲明消息處理函數(shù):

          ?// Generated message map functions
          ?//{{AFX_MSG(Input)
          ?afx_msg BOOL OnEraseBkgnd(CDC* pDC);
          ?afx_msg void OnButtonOk();
          ?afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
          ?afx_msg void OnPaint();
          ?//}}AFX_MSG
          ?DECLARE_MESSAGE_MAP()

          聲明消息循環(huán):
          BEGIN_MESSAGE_MAP(Input, CDialog)
          ?//{{AFX_MSG_MAP(Input)
          ?ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
          ?ON_WM_LBUTTONDBLCLK()
          ?ON_WM_PAINT()
          ?ON_WM_ERASEBKGND()
          ?//}}AFX_MSG_MAP
          END_MESSAGE_MAP()

          實(shí)現(xiàn):
          BOOL Input::OnEraseBkgnd(CDC* pDC)
          {
          ?if(m_hBmp)
          ?{
          ??BITMAP bm;
          ??GetObject(m_hBmp,sizeof(bm),&bm);
          ??HDC hMemdc=CreateCompatibleDC(pDC->m_hDC);
          ??if(hMemdc)
          ??{
          ???? HBITMAP hOldBmp=(HBITMAP)SelectObject(hMemdc,m_hBmp);
          ???? if(hOldBmp)
          ???? {
          ????? BitBlt(pDC->m_hDC,0,0,bm.bmWidth,bm.bmHeight,hMemdc,0,0,SRCCOPY);
          ????? SelectObject(hMemdc,hOldBmp);
          ????? DeleteDC(hMemdc);
          ????? DeleteObject(hOldBmp);
          ????? return TRUE;
          ???? }
          ???? else
          ??? DeleteDC(hMemdc);
          ??}
          ?}
          ?return CDialog::OnEraseBkgnd(pDC);
          }

          主站蜘蛛池模板: 涡阳县| 巴塘县| 和龙市| 铜川市| 克拉玛依市| 贵州省| 浦县| 林口县| 金沙县| 博湖县| 马鞍山市| 鹤山市| 拉孜县| 颍上县| 南京市| 巴林右旗| 南乐县| 泌阳县| 大丰市| 麻阳| 探索| 清原| 清镇市| 绩溪县| 和政县| 开封县| 三门峡市| 盖州市| 禄劝| 宜城市| 吐鲁番市| 鄢陵县| 定结县| 永安市| 宜昌市| 南部县| 乌拉特前旗| 辽阳县| 启东市| 海盐县| 瓦房店市|