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);
}