MFC代码收集
2006-03-30 14:24
让列表CListCtrl第一列居中显示
LVCOLUMN lvc;
lvc.mask = LVCF_FMT;
m_list2.GetColumn(0, &lvc);
lvc.fmt &= ~LVCFMT_JUSTIFYMASK;
lvc.fmt |= LVCFMT_CENTER;
m_listLayer.SetColumn(0, &lvc);
2006-03-31 15:49
得到文件大小
struct _stat ST;
_stat(strFileName, &ST);
int nFileSize = ST.st_size;
//列表整行选择和GridLine风格
m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP/*|LVS_EX_CHECKBOXES*/);
当鼠标提留在某项上指定时间时把该项设为选中状态。需要列表有LVS_EX_TRACKSELECT风格
m_ListCtrl.SetExtendedStyle(LVS_EX_TRACKSELECT|LVS_EX_FLATSB|LVS_EX_UNDERLINEHOT);
2006-06-04 16:45
#include <io.h>
判断一个文件是否存在
if( _access( lpszFileName, 00 ) == -1 )
/*
00 Existence only 存在
02 Write permission 可写
04 Read permission 可读
06 Read and write permission 可读写
*/
选择目录
BROWSEINFO bi;
char dispname[MAX_PATH],path[MAX_PATH];
ITEMIDLIST *pidl;
bi.hwndOwner = NULL;
bi.pidlRoot=0;
bi.pszDisplayName=dispname;
bi.lpszTitle="请选择备份目录:";
bi.ulFlags=BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN ;
bi.lpfn=0;
bi.lParam=0;
bi.iImage=0;
if(pidl=SHBrowseForFolder(&bi))
{
SHGetPathFromIDList(pidl,path);
m_strBackPath = CString(path);
}
2006-07-06 17:41
//获取CTabCtrl的标签文字
TCHAR szBuf[256];
TCITEM item;
item.mask= TCIF_TEXT;
item.pszText= szBuf;
item.cchTextMax= sizeof(szBuf)/sizeof(TCHAR);
m_tbCtr.GetItem(m_tbCtr.GetCurSel(), &item);
SetDlgItemText(IDC_EDIT2, szBuf);
给系统菜单添加关于选项
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=885908
wuhran 发表于2006-07-06 18:12:00 IP: 222.141.18.*
如何让工具条具有按下状态
CToolBar m_wndFuncBar;
int m_curTool;
m_wndFuncBar.GetToolBarCtrl().CheckButton(m_curTool,FALSE);
CToolBarCtrl::CheckButton(int nID, BOOL bCheck = TRUE);
wuhran 发表于2006-07-06 18:12:00 IP: 222.141.18.*
把CPropertySheet的标签放到下方时出现的错误
CTabCtrl* pTabCtrl = m_sheet.GetTabControl();
if(pTabCtrl)
{
pTabCtrl->ModifyStyle(0, TCS_BOTTOM);
}
这个是我的实现代码:
CRect rect;
DWORD dwStyle = WS_CHILD | WS_VISIBLE;
DWORD dwStyleEx = WS_EX_CONTROLPARENT;
m_sheet.AddPage(&m_dlgFileBack);
m_sheet.AddPage(&m_dlgFileDel);
m_sheet.Create(this, dwStyle, dwStyleEx);
CTabCtrl* pTabCtrl = m_sheet.GetTabControl();
if(pTabCtrl)
{
pTabCtrl->ModifyStyle(0, TCS_BOTTOM);
}
这样运行的时候就会出现下面的样子,就是标签只能看到小小的一条,其他的都看不到。
这个问题花了我很长时间,最后在准备发帖子询问的时候才突然想到原因
希望对遇到同样问题的朋友有点帮助
原来,创建CPropertySheet的时候,自动创建了一个CTabCtrl,我们可以用CPropertyShhet::GetTabControl()得到该TabCtrl的指针
如果要放到下面就要改变这个TabCtrl的大小,否则就会遮住属性页标签
完整的代码如下:
CRect rect;
DWORD dwStyle = WS_CHILD | WS_VISIBLE;
DWORD dwStyleEx = WS_EX_CONTROLPARENT;
m_sheet.AddPage(&m_dlgFileBack);
m_sheet.AddPage(&m_dlgFileDel);
m_sheet.Create(this, dwStyle, dwStyleEx);
CTabCtrl* pTabCtrl = m_sheet.GetTabControl();
if(pTabCtrl)
{
pTabCtrl->ModifyStyle(0, TCS_BOTTOM);
}
// 调整属性表到静态框大小
CWnd* pWnd = (CWnd*)GetDlgItem(IDC_STATIC_SHEET);
if(pWnd)
{
CRect rect;
pWnd->GetWindowRect(rect);
ScreenToClient(rect);
m_sheet.MoveWindow(rect);
//
// 调整TabCtrl大小
//
// rect.top += 5;
// rect.left += 5;
rect.bottom -= 5;
rect.right -= 10;
if(pTabCtrl)
{
pTabCtrl->MoveWindow(rect);
}
//
// 调整当前活动页大小
//
rect.top += 5;
rect.left += 5;
rect.bottom -= 20;
rect.right -= 20;
CPropertyPage* page = m_sheet.GetActivePage();
if(page)
{
page->MoveWindow(rect);
}
pWnd->ShowWindow(SW_HIDE);
}