一、分隔线
用Picture控件,拖动使其高度(或宽度)变为1,属性里Type设置为Frame,Color设置为Etched即可。
用GroupBox和分隔符组合使用可以做出相对美观的界面,当然也可以使用多个GroupBox使其边缘重叠,看上去就你分隔线的效果。
二、CTreeCtrl的用法
http://blog.youkuaiyun.com/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);