MFC 做不規則對話方塊

2021-06-16 07:31:29 字數 1408 閱讀 1533

根據顏色值來做不規則對話方塊

外圈紅色部分會被透掉,效果如下:

所以這張就不會顯示了,越簡單越好

宣告乙個成員變數:cbitmap   m_bmpdraw; 

在oninitdialog()載入:m_bmpdraw.loadbitmap(idb_bg_userinfo);

//這個函式最好在oninitdialog()呼叫,初始化執行一次就可以了

void cuserinfocontrol::setupregion(cdc *pdc) 

cdc                     memdc; 

cbitmap                &cbitmap=m_bmpdraw; 

cbitmap*              poldmembmp = null; 

colorref          col,colmask; 

crect                    crect; 

int                        x, y; 

crgn                    wndrgn, rgntemp; 

getwindowrect(&crect); 

cpoint ptorg=crect.topleft(); 

bitmap bminfo; 

cbitmap.getobject(sizeof(bminfo),&bminfo); 

crect rcnewwnd=crect(ptorg,csize(bminfo.bmwidth,bminfo.bmheight)); 

memdc.createcompatibledc(pdc); 

poldmembmp = memdc.selectobject(&cbitmap); 

colmask=memdc.getpixel(0,0); 

wndrgn.createrectrgn(0, 0, rcnewwnd.width(), rcnewwnd.height()); 

for(x=0; x<=rcnewwnd.width(); x++) 

for(y=0; y<=rcnewwnd.height(); y++) 

col = memdc.getpixel(x, y); 

if(col == colmask) 

rgntemp.createrectrgn(x, y, x+1, y+1); 

wndrgn.combinergn(&wndrgn, &rgntemp, rgn_xor); 

rgntemp.deleteobject();       

memdc.selectobject(poldmembmp); 

setwindowrgn((hrgn)wndrgn, true);  }

網易部落格:

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...

MFC擴充套件對話方塊 即收縮對話方塊

mfc擴充套件對話方塊 即收縮對話方塊 效果圖如下,擴充套件前 上 擴充套件後 下 上下擴充套件 具體步驟如下 1.在.h檔案中新增如下 1private 2boolm shrink 標記是否收縮 3intm winheight 儲存對話方塊的高度 4intm shrinkheight 收縮後的對話...