轉(zhuǎn)載請注明來源:http://www.cnblogs.com/xuesongshu/
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、滁州網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作、成都做商城網(wǎng)站、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為滁州等各大城市提供網(wǎng)站開發(fā)制作服務。在創(chuàng)建MFC項目的時候最后一步把窗口繼承的類由CDialogEx改為CDialog。這一步很重要哦。
用類向?qū)崿F(xiàn)窗口的WM_CTLCOLOR,代碼如下:
HBRUSH CAlphaEditMfc10Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { //HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 pDC->SetBkMode(TRANSPARENT); return (HBRUSH)GetStockObject(NULL_BRUSH); // TODO: 如果默認的不是所需畫筆,則返回另一個畫筆 //return hbr; }導入一張位圖,把OnPaint改一改:
void CAlphaEditMfc10Dlg::OnPaint() { CPaintDC dc(this); // 用于繪制的設備上下文 CRect rect; GetClientRect(&rect); if (IsIconic()) { SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使圖標在工作區(qū)矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 繪制圖標 dc.DrawIcon(x, y, m_hIcon); } else { //CDialog::OnPaint(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CBrush br; br.CreatePatternBrush(&bmp); dc.FillRect(&rect,&br); } }用代碼改為全透明之后下面的按鈕太難看,把它子類化,實現(xiàn)WM_PAINT消息:
void CMyButton::OnPaint() { PAINTSTRUCT ps; CPaintDC* dc=(CPaintDC*)BeginPaint(&ps); // device context for painting // TODO: 在此處添加消息處理程序代碼 // 不為繪圖消息調(diào)用 CButton::OnPaint() dc->SetBkMode(TRANSPARENT); dc->SelectObject(GetStockObject(NULL_BRUSH)); dc->SelectObject(CreatePen(PS_DOT,1,RGB(255,0,0))); LOGFONT lf; memset(&lf,0,sizeof(LOGFONT)); lstrcpy(lf.lfFaceName,L"微軟雅黑"); lf.lfHeight=24; dc->SelectObject(CreateFontIndirect(&lf)); dc->Rectangle(ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom); dc->DrawText(L"確定",2,&ps.rcPaint,DT_CENTER|DT_VCENTER); EndPaint(&ps); }CEdit透明之后需要實現(xiàn)一個EN_CHANGE消息,否則文件刪除就像沒刪一樣:
void CAlphaEditMfc10Dlg::OnChangeEdit1() { // TODO: 如果該控件是 RICHEDIT 控件,它將不 // 發(fā)送此通知,除非重寫 CDialog::OnInitDialog() // 函數(shù)并調(diào)用 CRichEditCtrl().SetEventMask(), // 同時將 ENM_CHANGE 標志“或”運算到掩碼中。 // TODO: 在此添加控件通知處理程序代碼 RECT r; GetDlgItem(IDC_EDIT1)->GetWindowRect(&r); ScreenToClient(&r); InvalidateRect(&r,TRUE); }好了,運行效果如下:
網(wǎng)站標題:MFC10環(huán)境下用MFC4的方法實現(xiàn)CEdit透明-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article38/cceosp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、用戶體驗、企業(yè)建站、網(wǎng)站營銷、網(wǎng)站內(nèi)鏈、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容