其他都自绘成功了,就是边框不行
在drawitem中我试过
crect rect;
getclientrect(&rect);
pdc->画矩形(rect);
这样画出来的边框 刚开始显示不出来,要点一下才行,而且当点击下拉那个按钮时,不知道响应了什么
事件,边框点的那一瞬间又会变回系统边框,
还有下拉那个边框怎么自绘?谢谢
在drawitem中我试过
crect rect;
getclientrect(&rect);
pdc->画矩形(rect);
这样画出来的边框 刚开始显示不出来,要点一下才行,而且当点击下拉那个按钮时,不知道响应了什么
事件,边框点的那一瞬间又会变回系统边框,
还有下拉那个边框怎么自绘?谢谢
解决方案 »
- vc++ MFC多文档中怎么遍历所有已经创建了的子窗体?
- 关于从网页中提取特定链接并保存到TXT文件中的问题
- 关于First-chance exception in XXX.exe (DBGHELP.DLL): 0xC0000005: Access Violation.
- 请教:如何把文本文件中的指定一行读入到一指定数组中
- 如何判断是否对文件有访问权限?
- 串口OVERLAPPED疑问
- 如何子类化一个编辑框,如何让一个编辑框只接受数字和小数点的输入
- 谁能帮我改写一个用VB写的函数
- 100分寻找一个类的用法(CDataSource)。
- Winsock编程中,如何清空接收缓冲区?
- 在程序所在文件夹 创建文本文档!如何实现比较简单?
- 窗口标题栏中的 最小化 还原 最大化 三个按钮分别怎么屏蔽,尤其是 还原 按钮??!!
void CMyComB0::OnPaint()
{
CComboBox::OnPaint();// 先让combo画一切
//
#ifdef NO_BORDER
CDC *pDC=GetDC(); // device context for painting
CRect rc;
GetClientRect(&rc);
CBrush brsh;
brsh.CreateSolidBrush(RGB(255,255,255));
CBrush *pBrshOld=pDC->SelectObject(&brsh);
pDC->FrameRect(&rc,&brsh);//去一个框
rc.DeflateRect(1,1);
pDC->FrameRect(&rc,&brsh);//可能要去2个框
pDC->SelectObject(pBrshOld);
#endif
}
以下你可以参考:注意响应这些消息:WM_MOVE||WM_PAINT||WM_NCPAINT|| WM_NCACTIVATE WM_NOTIFYCWindowDC wdc(this);
CBitmap bit;
bit.LoadBitmap(IDB_BG);//加载位图 CDC memDC;
memDC.CreateCompatibleDC(&wdc);
memDC.SelectObject(&bit);//将位图选进DC内存中 //caption
//可以重画标题兰,使用函数
CRect rtWnd, rtTitle;
GetWindowRect(&rtWnd);
//取得标题栏的位置
int nBorder =GetSystemMetrics(SM_CYSIZEFRAME );//围绕可改变大小的窗口的边框的厚度
rtTitle.left = GetSystemMetrics(SM_CXFRAME);
rtTitle.top = GetSystemMetrics(SM_CYFRAME);
rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);//+100);
//画上边线
wdc. StretchBlt(0, 0, rtWnd.right, rtTitle.top, &memDC, 4, 4, nBorder,nBorder, SRCCOPY);
//画左边线
wdc. StretchBlt(0, 0, nBorder, rtWnd.Height(), &memDC, 4, 4, nBorder,nBorder, SRCCOPY);
//画右边线
wdc. StretchBlt(rtTitle.right, 0, rtWnd.right, rtWnd.Height(), &memDC, 4, 4, nBorder,nBorder, SRCCOPY);
//画底边线
wdc. StretchBlt(0, rtWnd.Height()-nBorder, rtWnd.right+nBorder, rtWnd.Height(), &memDC, 4, 4, nBorder,nBorder, SRCCOPY);
//画标题背景
wdc. StretchBlt(rtTitle.left, rtTitle.top, rtWnd.Width(), rtTitle.Height(), &memDC, 4, 4, nBorder,nBorder, SRCCOPY);
//画标题文字
COLORREF oldTextColor = wdc.SetTextColor(RGB(255,255,255));
INT oldBkMode = wdc.SetBkMode(TRANSPARENT);
wdc.TextOut(0.5*rtWnd.Width()-m_szTitle.GetLength()-40, (rtTitle.Height()+nBorder)*0.5, this->m_szTitle);
wdc.SetTextColor(oldTextColor);
wdc.SetBkMode(oldBkMode);
bit.DeleteObject();
memDC.DeleteDC();
this->ReleaseDC(&wdc);
//Invalidate();
//UpdateWindow();
void CMyComB0::OnPaint()
忘了ReleaseDC()