一、分隔线
用Picture控件,拖动使其高度(或宽度)变为1,属性里Type设置为Frame,Color设置为Etched即可。
用GroupBox和分隔符组合使用可以做出相对美观的界面,当然也可以使用多个GroupBox使其边缘重叠,看上去就你分隔线的效果。
二、CTreeCtrl的用法
http://blog.csdn.net/shuilan0066/article/details/6638504
三、利用CImage在控件上动态显示图片
#include <atlimage.h>
RECT rect; GetDlgItem(IDC_STC_VERIFYCODE)->GetClientRect(&rect);//获得显示控件的RECT CDC* pDC =GetDlgItem(IDC_STC_VERIFYCODE)->GetDC();//获得显示控件的DC CImage image; //使用图片类 image.Load( L"verifycode.png"); //装载路径下图片信息到图片类 image.Draw( pDC->m_hDC,rect); //图片类的图片绘制Draw函数 ReleaseDC( pDC );
四、CListCtrl的用法
DWORD dwStyle = m_list_ctrl.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl) dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl) dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件 m_list_ctrl.SetExtendedStyle(dwStyle); //设置扩展风格 m_list_ctrl.InsertColumn( 0, "进程ID", LVCFMT_LEFT, 140 );//插入列 m_list_ctrl.InsertColumn( 1, "进程名", LVCFMT_LEFT, 140 );//插入列 m_list_ctrl.InsertColumn( 2, "线程数", LVCFMT_LEFT, 140 );//插入列 //插入一行数据 int nRow=m_list_ctrl.InsertItem(0,"1056");//插入行 m_list_ctrl.SetItemText(nRow, 1, "QQ.exe");//设置第一列数据 m_list_ctrl.SetItemText(nRow, 2, "58");//设置第二列数据
五、MFC中避免窗口重绘导致窗口闪烁的方法
思路:先创建一个窗口兼容的内存DC,使用内存DC画图,然后将内存DC复制到窗口DC中
//在指定的窗口CWnd * pWnd中画图 void CRecoDemoDlg::WndPaint(CWnd * pWnd) { //1、获取窗口dc及窗口RECT CDC* pWndDC=pWnd->GetDC();//获得指定窗口的dc RECT rect; pWnd->GetClientRect(&rect);//获得指定窗口的Rect //2、创建兼容内存dc CDC MemDC; MemDC.CreateCompatibleDC(pWndDC);//创建兼容窗口dc的内存dc //3、创建兼容位图,让内存dc输出到位图 CBitmap MemBitmap; MemBitmap.CreateCompatibleBitmap(pWndDC,rect.right-rect.left,rect.bottom-rect.top);//创建兼容位图 MemDC.SelectObject(MemBitmap);//让内存dc输出到位图 //4、使用内存dc画图,这里是显示一张图片 CImage image; //使用图片类 image.Load( m_ImgFileName); //装载路径下图片信息到图片类 image.Draw( MemDC.m_hDC,rect); //图片类的图片绘制函数Draw //5、将内存dc复制到窗口dc pWndDC->BitBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&MemDC,0,0,SRCCOPY); //6、释放dc ReleaseDC( &MemDC ); ReleaseDC(pWndDC); }
六、从右下角升起的弹窗
// 在OnInitDialog()中添加 // 示例 // 获得桌面大小 CRect rectWorkArea; SystemParametersInfo(SPI_GETWORKAREA,0,&rectWorkArea,SPIF_SENDCHANGE); // 获得对话框大小 CRect rectDlg; GetWindowRect(&rectDlg); int nW = rectDlg.Width(); int nH = rectDlg.Height(); // 将窗口设置到右下角 ::SetWindowPos(GetSafeHwnd(),HWND_BOTTOM,rectWorkArea.right-nW-20,rectWorkArea.bottom-nH,nW,nH,SWP_NOZORDER); // 动画显示弹窗效果 AnimateWindow(GetSafeHwnd(),800,AW_SLIDE|AW_VER_NEGATIVE);