青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 67  文章 - 171  trackbacks - 0
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

連接資料

最新隨筆

搜索

  •  

最新隨筆

最新評論

void CTransDlg::SetupRegion(CDC *pDC /*對話框窗口DC*/, UINT BackBitmapID /*背景位圖資源ID*/,
UINT MaskBitmapID /*區(qū)域處理位圖資源ID*/, COLORREF TransColor = 0x00000000 /*透明顏色值,默認為黑色*/)。
{
 //我們暫時認為MaskBitmapID等同于BackBitmapID。
 //其核心工作是根據(jù)MaskBitmapID指示位圖的象素顏色進行區(qū)域組合。
 CDC memDC;
 CBitmap cBitmap;
 CBitmap* pOldMemBmp = NULL;
 COLORREF cl;
 CRect cRect;
 UINT x, y;
 CRgn wndRgn, rgnTemp;
 //取得窗口大小
 GetWindowRect(&cRect);
 //背景位圖資源ID
 UINT m_BackBitmapID = BackBitmapID;
 //裝載位圖
 cBitmap.LoadBitmap(MaskBitmapID);
 memDC.CreateCompatibleDC(pDC);
 pOldMemBmp = memDC.SelectObject(&cBitmap);
 //首先創(chuàng)建默認的完整區(qū)域為完整的窗口區(qū)域
 wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());
 //下面的兩層循環(huán)為檢查背景位圖象素顏色,進行透明區(qū)域處理;
 //當象素顏色為指定的透明值時,即將該點從區(qū)域中剪裁掉。
 int m_MaskLeftOff=0,m_MaskTopOff=0;
 int m_MaskRightOff=0,m_MaskBottomOff=0;
 int m_FrameWidth=0,m_CaptionHeight=0;
 for(x= m_FrameWidth+m_MaskLeftOff;x<=cRect.Width() - m_FrameWidth-m_MaskRightOff; x++)
 {
  for(y = m_CaptionHeight+m_MaskTopOff; y<=cRect.Height() - m_FrameWidth-m_MaskBottomOff; y++)
   {
    //取得坐標處象素的顏色值
    cl = memDC.GetPixel(x - m_FrameWidth-m_MaskLeftOff,y - m_CaptionHeight-m_MaskTopOff);
    if(col == TransColor)
    {
     //象素顏色為指定的透明色,創(chuàng)建透明“微區(qū)域”
     rgnTemp.CreateRectRgn(x, y, x+1, y+1);
     //“扣像”,從完整的區(qū)域中“扣除”透明的“微區(qū)域”
     wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_XOR);
     //刪除剛創(chuàng)建的透明“微區(qū)域”,釋放系統(tǒng)資源
     rgnTemp.DeleteObject();
    }
      }
 }
 if (pOldMemBmp)
  memDC.SelectObject(pOldMemBmp);
 //用設定窗口為指定的區(qū)域
 SetWindowRgn((HRGN)wndRgn, TRUE);
}
//即添加WM_ERASEBKGND消息處理過程
OnEraseBkgnd(CDC* pDC)
{
 // TODO: Add your message handler code here and/or call default
 CRect rect;
 CDC memDC;
 CBitmap cBitmap;
 CBitmap* pOldMemBmp = NULL;
 GetWindowRect(&rect);
 //裝載背景位圖
 cBitmap.LoadBitmap(m_BackBitmapID);
 memDC.CreateCompatibleDC(pDC);
 pOldMemBmp = memDC.SelectObject(&cBitmap);
 //將背景位圖復制到窗口客戶區(qū)
 pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRC/DownloadFiles\a\2001-10-12\COPY);
 if (pOldMemBmp)
  memDC.SelectObject( pOldMemBmp );
 //刪除系統(tǒng)卻省的OnEraseBkgnd功能
 //return CDialog::OnEraseBkgnd(pDC);
 return TRUE;
}
//接下來是在WM_PAINT的消息處理函數(shù)OnPaint()中添加代碼。
//由于當背景位圖比較大時,進行區(qū)域處理比較耗時,所以只在啟動時進行一次處理。
//一種方法是OnInitDialog()處理,但這樣會在從啟動程序到窗口出現(xiàn)有相當?shù)难舆t,
//易引起程序尚未啟動的誤解。
//再一種方法就是在OnPaint()處理,但為了避免重復處理,可以加上一個判斷標志。
//以下是OnPaint()的代碼,正體為AppWizard生成,粗體為自己添加內容。
//
void CTransDlg::OnPaint()
{
 if (IsIconic()){……}
 else
 {
  if(m_nFirstRun)
  {
   //首次運行標志//修改鼠標光標為等待方式BeginWaitCursor();
   //設置背景區(qū)域
   SetupRegion(GetWindowDC(),IDB_BACKBMP, IDB_BACKBMP,0x00FFFFFF /*白色*/);
    //恢復鼠標光標為正常模式
   EndWaitCursor();
   m_nFirstRun = 0;
  }
  CDialog::OnPaint();
 }
}
//剩下的工作就是根據(jù)背景位圖的大小來設置對話框窗口的大小和位置
//這可以在OnInitDialog()中通過調用MoveWindow()來實現(xiàn)
//但有些情況下又需要不同的樣式,如有標題欄、邊框等,或者只作局部的處理
//這就是前面兩個成員變量m_FrameWidth和m_CaptionHeight作用
BOOL CTransBmpDlg::OnInitDialog()
{
 // TODO: Add extra initialization here
 m_nFirstRun = 1;
 //數(shù)據(jù)設置,窗口左上角坐標:
 m_Left=0;
 m_Top=0;
 //背景位圖寬高:
 m_Width=535;
 m_Height=105;
 SetSize(0, 0, 535, 105);
 //蒙板處理區(qū)域與窗口邊框的距離
 m_MaskLeftOff=m_MaskTopOff=m_MaskRightOff=m_MaskBottomOff=0;
 //窗口邊框與標題欄象素值
 m_FrameWidth = m_CaptionHeight = 0;
 //取得窗口樣式
 LONG style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
 //如保留窗口風格樣式,則根據(jù)不同的窗口邊框類型
 //選取不同的m_FrameWidth和m_CaptionHeight值,
 //也可以根據(jù)處理位置的需要進行付值
 if((style & WS_BORDER) == WS_BORDER)
  m_FrameWidth = ::GetSystemMetrics(SM_CXBORDER);
 if((style & WS_THICKFRAME) == WS_THICKFRAME)
  m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
 if((style & DS_MODALFRAME) == DS_MODALFRAME)
  m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
 if((style & WS_CAPTION) == WS_CAPTION)
 {
  m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
  m_CaptionHeight = ::GetSystemMetrics(SM_CYSMCAPTION);
 }
 m_CaptionHeight += m_FrameWidth * 2;
 //重置窗口的位置和大小
 MoveWindow(m_Left, m_Top, _FrameWidth * 2m_Width + m, m_Height + m_CaptionHeight, TRUE);
 ……return TRUE;
 // return TRUE unless you set the focus to a control
}
//使窗口樣式不僅僅受背景位圖顏色的控制。
//通過指定SetupRegion()的MaskBitmapID 為一個我們稱之為“蒙板”的雙色位圖
posted on 2008-08-04 11:56 cpsprogramer 閱讀(3203) 評論(3)  編輯 收藏 引用 所屬分類: VC++

FeedBack:
# re: vc異形界面代碼整理![未登錄] 2008-08-05 09:22 Louis
不如試用一下layerwindow吧,效果很好,不過對系統(tǒng)版本有一定要求  回復  更多評論
  
# re: vc異形界面代碼整理! 2008-08-10 10:27 葉付海的C++
@Louis
沒這么聽過!  回復  更多評論
  
# re: vc異形界面代碼整理! 2012-03-08 14:36 冬雷
代碼寫的寫的太爛了
crect 沒有width
col沒定義  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美chengren| 亚洲精品一区二区三区av| 久久爱www久久做| 亚洲国产成人在线| 久久艳片www.17c.com| 亚洲美女av电影| 99re视频这里只有精品| 欧美色播在线播放| 免播放器亚洲一区| 久久一区视频| 欧美午夜激情在线| 免费日韩成人| 亚洲大胆人体视频| 亚洲另类视频| 国产综合一区二区| 亚洲精品久久久久久久久久久久| 欧美精品一区二区三区四区| 性做久久久久久免费观看欧美| 久久久高清一区二区三区| 一本色道久久综合亚洲91| 久久久久久久精| 欧美中文字幕视频| 欧美片网站免费| 亚洲国产精品成人综合色在线婷婷| 国产精品卡一卡二| 中文高清一区| 亚洲一区二区三区免费视频| 欧美国产日本| 亚洲人精品午夜| 亚洲老司机av| 欧美不卡三区| 亚洲精品乱码久久久久久| 亚洲黄色免费| 久久精品国产亚洲aⅴ| 久久精品欧美日韩| 国产综合自拍| 久久综合五月| 亚洲日本成人| 午夜精品久久久久影视| 国产精品成人一区二区艾草| 亚洲在线一区二区三区| 午夜亚洲福利| 在线欧美电影| 欧美系列电影免费观看| 欧美在线免费视屏| 亚洲精品视频免费在线观看| 亚洲一线二线三线久久久| 国产一本一道久久香蕉| 女人色偷偷aa久久天堂| 日韩视频中文| 欧美/亚洲一区| 亚洲一区二区伦理| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲色图自拍| 国产一区二区三区久久 | 亚洲精品少妇30p| 欧美日韩精品系列| 亚洲卡通欧美制服中文| 国产一区二区三区在线观看视频| 美腿丝袜亚洲色图| 亚洲福利视频三区| 国内成人精品一区| 久久精品综合| 艳女tv在线观看国产一区| 久久久久一区二区| 亚洲第一精品电影| 欧美二区在线播放| 欧美激情在线| 一卡二卡3卡四卡高清精品视频| 久久久精品网| 亚洲专区一二三| 亚洲大胆人体视频| 欧美久久久久免费| 亚洲日本va午夜在线电影| 一色屋精品视频在线看| 欧美 日韩 国产在线| 亚洲国产精品久久91精品| 亚洲精品在线一区二区| 欧美三级午夜理伦三级中视频| 久久精品一区二区国产| 翔田千里一区二区| 亚洲一区二区三区777| 亚洲免费在线精品一区| 亚洲在线视频一区| 午夜精品国产更新| 免费亚洲一区二区| 欧美日韩高清不卡| 欧美日韩在线播放三区四区| 欧美亚洲成人免费| 在线观看国产精品网站| 欧美一区二区三区精品| 欧美成人一区二区在线 | 国产精品久久久久久久久动漫| 欧美高清视频在线播放| 黄色亚洲大片免费在线观看| 国产精品羞羞答答| 亚洲一区二区少妇| 亚洲综合社区| 在线精品福利| 亚洲午夜激情在线| 欧美激情视频在线播放| 亚洲欧美日本国产有色| 欧美激情视频一区二区三区不卡| 国产精品亚洲视频| 欧美一区二区三区四区夜夜大片| 欧美国产日韩xxxxx| 久久亚洲精品一区二区| 一区在线视频| 欧美成人第一页| 久久理论片午夜琪琪电影网| 一区二区三区在线视频观看| 久久精品91久久久久久再现| 亚洲影院在线观看| 国产伦精品免费视频| 久久精品国产96久久久香蕉| 久久精品人人做人人爽| 亚洲第一网站免费视频| 亚洲第一福利在线观看| 欧美高清在线视频观看不卡| 亚洲视频免费看| 午夜激情综合网| 亚洲高清在线播放| 亚洲精品综合| 国产伦精品一区二区三区| 麻豆精品国产91久久久久久| 免费视频一区| 久久精品国产久精国产爱| 美女精品在线| 香蕉国产精品偷在线观看不卡| 久久高清福利视频| 这里只有精品在线播放| 欧美一区永久视频免费观看| 亚洲乱码国产乱码精品精可以看 | 9久草视频在线视频精品| 国产一区二区三区在线播放免费观看| 暖暖成人免费视频| 国产精品久久精品日日| 亚洲国产成人久久| 韩国久久久久| 欧美伊人精品成人久久综合97| 在线亚洲欧美| 欧美日韩一区二区免费视频| 免费观看一级特黄欧美大片| 国产精品高潮粉嫩av| 亚洲毛片在线| 亚洲欧美日韩一区二区| 欧美日韩国产一中文字不卡| 亚洲高清在线精品| 亚洲经典三级| 欧美伦理91i| 99国产精品久久久久老师| 一区二区av在线| 国产精品久久久久aaaa| 亚洲女性裸体视频| 久久精品女人的天堂av| 伊人久久大香线| 欧美成人亚洲| 亚洲欧美激情四射在线日 | 欧美高清在线观看| 亚洲福利精品| 欧美午夜片在线观看| 午夜欧美不卡精品aaaaa| 久久综合九色综合久99| 夜夜嗨av一区二区三区四区| 国产精品videossex久久发布| 亚洲欧美国产日韩天堂区| 蜜桃精品久久久久久久免费影院| 伊人久久久大香线蕉综合直播| 美女国内精品自产拍在线播放| 亚洲最新色图| 欧美激情国产日韩精品一区18| 亚洲自拍都市欧美小说| 亚洲大胆女人| 国产欧美婷婷中文| 欧美日韩久久精品| 久久国产精品久久w女人spa| 亚洲日本中文字幕区| 男人的天堂亚洲| 久久精品色图| 午夜视频在线观看一区二区| 亚洲乱码国产乱码精品精可以看 | 男女精品网站| 亚洲免费网站| 亚洲在线电影| 夜夜嗨av色综合久久久综合网| 在线观看亚洲精品| 一区二区亚洲欧洲国产日韩| 国产视频一区三区| 国产日韩欧美a| 国产在线观看一区| 狠狠色综合网| 在线免费日韩片| 亚洲毛片视频| 亚洲综合丁香| 久久久欧美一区二区| 久久综合色一综合色88| 美日韩免费视频| 亚洲日本精品国产第一区| 亚洲一二三级电影| 欧美怡红院视频一区二区三区|