MFC遇到小问题及解决方法
来源:互联网 发布:程序员简历工作业绩 编辑:程序博客网 时间:2024/06/10 01:22
1. TextOut输出文字背景颜色与窗口背景颜色不一致:
在OnDraw函数中设置为透明模式
void CPropView::OnDraw(CDC* pDC){CPropDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herepDC->SetBkMode(TRANSPARENT);}
2. 点击菜单显示工具栏,浮动状态从隐藏到再显示的时候,工具栏没有处于原来的位置。
问题代码:
void CMainFrame::OnMytool() {// TODO: Add your command handler code hereif (m_newToolBar.IsVisible()){m_newToolBar.ShowWindow(SW_HIDE);GetMenu()->GetSubMenu(2)->CheckMenuItem(IDM_MYTOOL, MF_BYCOMMAND | MF_UNCHECKED);}else{m_newToolBar.ShowWindow(SW_SHOW);GetMenu()->GetSubMenu(2)->CheckMenuItem(IDM_MYTOOL, MF_BYCOMMAND | MF_CHECKED);}RecalcLayout();//做窗口调整,否则工具条会一直显示DockControlBar(&m_newToolBar);//停靠工具栏 }void CMainFrame::OnUpdateMytool(CCmdUI* pCmdUI) {// TODO: Add your command update UI handler code herepCmdUI->SetCheck(1);}
修改后的代码:
void CMainFrame::OnMytoolbarShow(){ShowControlBar(&m_wndMyToolBar, (m_wndMyToolBar.GetStyle()& WS_VISIBLE)==0, FALSE);}void CMainFrame::OnUpdateMytoolbarShow(CCmdUI *pCmdUI){pCmdUI->SetCheck((m_wndMyToolBar.GetStyle() & WS_VISIBLE)!=0);}3. MFC 画一个透明矩形
向设备上下文dc选入一个空画刷br和一个红画笔pen即可简单实例如下://CBrush br;//CPen pen;pen.CreatePen(PS_SOLID,1,RGB(255,0,0));br.CreateStockObject(NULL_BRUSH);dc.SelectObject(&pen);dc.SelectObject(&br);//dc.Rectangle(1,1,100,100);
4. 设置窗口、对话框的背景
窗口:
BOOL CGrapheView::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call defaultCBitmap mBmp;mBmp.LoadBitmap(IDB_BITMAP1);CDC dc;BITMAP bt;mBmp.GetBitmap(&bt);CRect rect;GetClientRect(&rect);dc.CreateCompatibleDC(pDC);CBitmap *pBmp = (CBitmap *)dc.SelectObject(&mBmp);pDC->StretchBlt(0, 0, rect.Width(), rect.Height(),&dc, 0, 0, bt.bmWidth, bt.bmHeight, SRCCOPY);dc.SelectObject(pBmp);mBmp.DeleteObject();return true;return CView::OnEraseBkgnd(pDC);}
对话框:
HBRUSH CSetingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif (pWnd == this){CBrush brs;pDC->SetBkMode(TRANSPARENT);brs.CreateStockObject(NULL_BRUSH);CBitmap bmp;BITMAP bt;bmp.LoadBitmap(IDB_BITMAP1);bmp.GetBitmap(&bt);CDC cDC;cDC.CreateCompatibleDC(pDC);CBitmap* pbmp = (CBitmap*)cDC.SelectObject(&bmp);CRect rt;GetWindowRect(&rt);ScreenToClient(&rt);pDC->StretchBlt(0, 0, rt.Width(), rt.Height(), &cDC,0, 0, bt.bmWidth, bt.bmHeight, SRCCOPY);cDC.SelectObject(pbmp);bmp.DeleteObject();return brs;}// TODO: Return a different brush if the default is not desiredreturn hbr;}
5. MFC 文本框 更新数据后如何拉到最下方显示
int length=m_edit1.GetWindowTextLength();m_edit1.SetSel(length,length); 也可以用m_edit1.LineScroll(MAXINT_PTR);
- MFC遇到小问题及解决方法
- 遇到问题及解决方法
- 使用GridView时遇到的一些小问题及解决方法
- 开发中遇到的小问题及解决方法
- 虚拟机安装遇到的几个小问题及解决方法
- GeekOS 遇到问题及解决方法
- GeekOS 遇到问题及解决方法
- 遇到的问题及解决方法
- 遇到的问题及解决方法
- hbase遇到问题及解决方法
- 近期做东西所遇到的几个MFC恼火的问题及解决方法
- 在部署Web工程时遇到的一个小问题,及解决方法
- 编译mysql测试文件时遇到的小问题及解决方法
- windows系统tomcat降权遇到的小问题及解决方法
- 最近遇到的问题 及解决方法
- 今天遇到的一个问题及解决方法
- make modules 遇到的问题及解决方法
- ibatis 遇到的问题及解决方法
- Linux进程控制与程序设计
- Observer(观察者) 模式
- 外交部副部长-日本否认钓鱼岛争议对日没好处-钓鱼岛-争议-崔天凯
- java.lang.NoClassDefFoundError错误解决方法
- Microsoft Increment Linker已停止工作解决方案
- MFC遇到小问题及解决方法
- fedora17 杂
- RelativeLayout
- 自顶向下的语法分析(修改)
- 【动态规划】教主泡嫦娥
- JAVA XP Windows7 Linux环境变量设置
- Object-C内存管理中的黄金法则
- 大道至简
- Flex event 强引用与弱引用