MFC基礎知識總結(1)
1.列表視圖控件:
ClistCtrl類的用法:
1常規操作函數:它們可以完成向列表視圖中插入新
條目或新列等操作。
ISubItem-指定條目子索引項
BOOL DeleteAllItems()刪除列表控件中所有條目
int InsertColumn(int nCol,const LVCOLUMN * pColum)插入新列 操作成功返回新列索引
nCol-----指定新列索引。
pColum---爲LVCOLUMN結構指針,包含將插入的信息。
LVCOLUMN結構
例:m_ListCtrl.InsertColumn( 0, _T( "所有匹配的單詞" ), LVCFMT_LEFT, 115 );
int InsertItem(const LVITEM *pItem)調用該函數以
向列表中插入新條目 返回新條目索引值
pItem-------爲LVITEM結構,其中包含了將插入的條目信息
列表控制中包含兩個非常重要的數據結構LV_ITEM和LV_COLUMN。LV_ITEM用於定義列表控制的一個表項,LV_COLUMN用於定義列表控制的一個表列
例:m_ListCtrl.InsertItem( 0, WordSet.m_Word );//數據項
CString s;
s.Format("%d",m_Set.m_column1);//格式化
//int InsertItem(i,s,0)調用該函數以向列表中插入新條目 返回新條目索引值
//相當於插入新的一行 數字代表列數
m_ListCtrlx.InsertItem(i,s,0);
EnsureVisible---調用該函數以確保指定的列表視圖條目可見,其原型爲:
BOOL EnsureVisible(int nItem,BOOL bPartialOK)
返回值:
nItem:指定了必須可見的條目索引。
bPartialOK:指定了是否允許部分可見。
列表視圖控件將在必要時進行滾動,以確保指定條目可見。如果bPartialOK參數爲非零值,則當條目部分可見時,列表視圖控件不進行滾動。
2。屬性操作函數:它們可以完成對列表視圖控件的屬性的設置和查詢等操作。
DWORD SetExtendedStyle(DWORD dwNewStyle) //先設計列表風格
如果函數調用成功,則返回列表視圖控件先前所使用的
擴展風格。
LVS_EX_FULLROWSELECT-----對列表視圖中的項目進行整行選擇,即選擇某條目時,該條目的所在行都被選擇。
LVS_EX_GRIDLINES----將在列表視圖控件中繪製網格線0x21。
例:m_ListCtrl.SetExtendedStyle( LVS_EX_GRIDLINES );//將在列表視圖控件中繪製網格線0x21。
POSITION GetFirstSelectedItemPosition() const 如果函數執行成功,則返回條目的POSITION值,如果返回值爲KULL,則表示當前列表視圖控件中沒有條目選中。
Int GetNextSelectedItem(POSITION& pos) const 如果函數執行成功,則返回列表視圖控件中下一個被選中的條目索引。其中參數pos爲將接收條目POSITION值的變量。
BOOL SetColumnWidth(int nCol,int cx)
調用該函數以設置報表視圖或列表視圖中指定列的寬度。
nCol----指定了將被設置寬度的列索引。
cx-------指定了列的新寬度。
Int GetItemText(int nItem, int nSubItem,LPTSTR lpszText,int nLen) const;
CString GetItemText(int nItem, int nSubItem) const;
對於int,其返回值爲所指定的文本長度;對CString,其返回值爲包含條目文本的CString對象。
nItem--------指定將被獲取文本的條目索引
nSubItem---------指定了將被獲取文本的條目子項的索引。
lpszText---------將返回條目文本的緩衝區指針。
nLen----------指定lpszText緩衝區的長度。
如果nSubItem爲0,則函數將獲取條目的標籤,nSubItem不爲0,將獲取指定條目子項的文本。
例:
BOOL SetItemText(int nItem, int nSubItem,LPTSTR lpszText);
如果函數調用成功,則返回非零值,否則返回零值。
nItem--------指定將被設置的條目索引
nSubItem---------指定了將被設置文本的條目子項的索引。
lpszText---------指定了將被設置的新條目文本。
例:
char szTemp[27] = { '/0' };//緩衝區
POSITION Pos = m_ListCtrl.GetFirstSelectedItemPosition();
if ( Pos == NULL ) return;
int nCurIndex = m_ListCtrl.GetNextSelectedItem( Pos );
m_Display.Empty();//文本編輯框
m_ListCtrl.GetItemText( nCurIndex, 0, szTemp, 26 );
CImageList:圖像列表
CImagelist* GetImageList(int nImageList) const;
如果函數執行成功,則返回列表視圖控件的圖像列表指針。
nImageList----指定了將獲得的圖像列表類型。
LVSIL_NORMAL---獲取大圖標圖像列表指針
LVSIL_SMALL--獲取小圖標圖像列表指針
LVSIL_STATE--獲取狀態圖像列表指針
CImageList* SetImageList(CImageList* pImageList,int nImageList);
如果函數執行成功,返回先前的圖像列表指針
參數: pImageList--指定了要設置的圖像列表指針
nImageList--指定了要設置的圖像列表類型
COLORREF GetBkColor() const; 調用該函數獲得列表視圖控件的背景顏色。
函數執行成功,返回32位RGB值
BOOL SetBkColor (COLORREF cr); 調用該函數設置列表視圖控件的背景顏色。
函數執行成功,返回非零值,否則返回零值。
CHeaderCtrl* GetHeaderCtrl(); 調用改函數以得到列表視圖控件的標頭控件指針
函數調用成功,返回列表視圖控件所使用的標頭控件指針
例:
m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_YES));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_NO));
m_list.SetImageList(&m_imagelist,LVSIL_SMALL);
m_list.SetExtendedStyle(0x21);
m_list.SetFont(&m_font1);//設置全部字體
// m_list.GetHeaderCtrl()->SetFont(&m_font1);//只設置標頭控件的字體
//以下函數與文本有關
m_list.SetBkColor(RGB(247,247,0));
m_list.SetTextColor(RGB(255,255,255));//設置列表視圖控件的文本顏色
m_list.SetTextBkColor(RGB(0,0,255));//設置列表視圖控件中文本背景色
m_iImageList.Create(24, 24, TRUE,1, 0);
HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_KEBIAO), IMAGE_ICON, 24, 24, 0);
m_iImageList.Add(hIcon);
m_FileTree.SetImageList ( &m_iImageList,TVSIL_NORMAL );
----------------------事例----------------------------------
實現排序:
BOOL m_Bs;
BOOL m_bIsAsc;//互斥信號量:true升序 反之降序
CDRecordset m_Set;
void Sort(BOOL isAsc=TRUE,int secol=1);
void CBaDialog::Sort(BOOL isAsc,int secol)
{
if(m_Set.IsOpen())
m_Set.Close();
this->Select(); //打開所選擇數據表
m_bSet.Close();//只對m_Set數據標排序 所以關閉m_bSet
CODBCFieldInfo fieldInfo;
m_Set.GetODBCFieldInfo(secol,fieldInfo);//返回紀錄集中字段的特定種類的信息 即所選
擇的信息
if(isAsc)//實現排序功能
{
m_Set.m_strSort=fieldInfo.m_strName+" ASC";//order by
m_bIsAsc=TRUE;
}
else
{
m_Set.m_strSort=fieldInfo.m_strName+" DESC";
m_bIsAsc=FALSE;
}
m_Set.Requery();
}
//單擊索引
void CBaDialog::OnColumnclickList3(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;//系統自動生成
// TODO: Add your control notification handler code here
if(FALSE== m_bS)
{
int k= pNMListView->iSubItem; //鼠標單擊選擇第幾行
Sort(!m_bIsAsc, k);
m_ListCtrlx.DeleteAllItems();
this->Show();//把數據庫學生的數據表內容顯示
}
*pResult = 0;
}
右鍵單擊事件
void CCCDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到當前選中的行
if(pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
CPoint pt;
::GetCursorPos(&pt);
COfficeXPMenu m_menu;
m_menu.LoadMenu(IDR_MENU_LIST);
COfficeXPMenu::SetType(TYPE_XP); //設置菜單的風格,(TYPE_XP, TYPE_NORMAL)
COfficeXPMenu *psub = (COfficeXPMenu *)m_menu.GetSubMenu(0);
DWORD dwID =psub->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y ,this);
m_menu.DestroyMenu();
}
*pResult = 0;
}
列表雙擊事件(實現在編輯框中顯示內容)
// 雙擊則顯示顯示信息
void CListItemDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
CWordDaoSet WordSet;
CString strSQL;
CString strNewLine( "/r/n" );//回車換行
char szTemp[27] = { '/0' };
//得到雙擊列的位置
POSITION Pos = m_ListCtrl.GetFirstSelectedItemPosition();
if ( Pos == NULL ) return;
int nCurIndex = m_ListCtrl.GetNextSelectedItem( Pos );
m_Display.Empty();
m_ListCtrl.GetItemText( nCurIndex, 0, szTemp, 26 );
strSQL.Format( "SELECT * FROM WordList WHERE word = '%s'", szTemp );
if ( WordSet.IsOpen() )
WordSet.Close();
WordSet.Open( AFX_DAO_USE_DEFAULT_TYPE, strSQL, 0 );
if ( !WordSet.IsEOF() )
{
if ( !WordSet.m_Explain0.IsEmpty() )
m_Display += WordSet.m_Explain0 ;//字符串相加
if ( !WordSet.m_Explain1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Explain1 );
if ( !WordSet.m_Explain2.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Explain2 );
if ( !WordSet.m_Phrase0.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase0 );
if ( !WordSet.m_Phrase1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase1 );
if ( !WordSet.m_Phrase2.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase2 );
if ( !WordSet.m_Sentence0.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Sentence0 );
if ( !WordSet.m_Sentence1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Sentence1 );
}
if ( WordSet.IsOpen() )
WordSet.Close();
UpdateData( FALSE );//在編輯框中顯示文本
*pResult = 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
void CCcDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) //雙擊list控件的函數
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到當前選中的行
if(pos) //如果選中一行
{
int nItem = m_list.GetNextSelectedItem(pos);
CAddDlg dlgadd;
dlgadd.m_bAddOrModify=1; //修改記錄的標誌
if(m_list.GetItemText(nItem,0)=="N")
dlgadd.m_bPassed=false; //單項按鈕
else
dlgadd.m_bPassed=true;
dlgadd.m_strName=m_list.GetItemText(nItem,1);
dlgadd.m_strCollege =m_list.GetItemText(nItem,2);
dlgadd.m_strReason =m_list.GetItemText(nItem,3);
dlgadd.m_date1 =m_list.GetItemText(nItem,4);
dlgadd.m_date2 =m_list.GetItemText(nItem,5);
dlgadd.m_strRemark =m_list.GetItemText(nItem,6);
dlgadd.DoModal();
}
*pResult = 0;
}
////////
CListCtrl中選擇變化時如何獲得通知?
我在Report View中使用了一個CListCtrl(自繪製類型),我想知道什麼時候選擇項發生了改變.
在選擇項變化時,可以使用按鈕有效或失效,按如下操作:
加入LVN_ITEMCHANGED消息處理.
void CYourClassNameHere::OnItemchangedEventList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
if (pNMListView->uChanged == LVIF_STATE)
{
if (pNMListView->uNewState)
GetDlgItem(IDC_DELETE)->EnableWindow(TRUE);
else
GetDlgItem(IDC_DELETE)->EnableWindow(FALSE);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
樹視圖控件-樹視圖控件
屬性設置-style:有按鈕、有行、line at root 、邊框;more style:卷軸、工具欄提示。
屬性操作函數
。GetParentItem:調用該函數得到指定樹視圖條目的父條目.
HTREEITEM GetParentItem(HTREEITEM hItem);
hItem:指定條目句柄。
常規操作函數
.InsertItem:向樹形控件插入新條目
/* TVINSERTSTRUCT tvInsert; //d第一中插入方法
tvInsert.hParent = NULL;//指定了父條目句柄,參數爲TVI_ROOT或NULL,則該條目被插入控件的根部
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("VC知識庫www.vckbase.com");
HTREEITEM hCountry = m_CtrlTree.InsertItem(&tvInsert);*/
//第二種方法
HTREEITEM hCountry = m_CtrlTree.InsertItem( _T("VC知識庫www.vckbase.com"), NULL, NULL);//根目錄
HTREEITEM hPA = m_CtrlTree.InsertItem(TVIF_TEXT,_T("程序員社區"), 0, 0, 0, 0, 0, hCountry, NULL);//二級目錄
HTREEITEM hWA = m_CtrlTree.InsertItem(_T("文檔代碼中心"),0, 0, hCountry, hPA);// 二級目錄
// m_CtrlTree.InsertItem(_T("程序員論壇"),0, 0, hPA, TVI_SORT);//三級目錄
m_CtrlTree.InsertItem(_T("程序員論壇"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("程序員交友"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("人才交流"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("文檔中心"), hWA, TVI_SORT); //三級目錄
m_CtrlTree.InsertItem(_T("代碼倉庫"), hWA, TVI_SORT);
m_CtrlTree.InsertItem(_T("個人專輯"), hWA, TVI_SORT);
m_CtrlTree.Expand(hCountry,TVE_EXPAND);
。GetItemText:得到指定條目的文本
。SetItemText
.Expand:調用該函數以展開或收攏指定條目的子條目。
BOOL Expand(HTREEITEM hItem,UINT nCode);
函數成功,返回非零值,否則返回零值。
hItem:指定將打開或收攏的條目句柄。
nCode:指定了採取的操作,如下:
TVE_COLLAPSE:收攏列表
TVE_COLLAPSERESET:收攏列表,並刪除子條目
TVE_EXPAND:打開列表
TVE_TOGGLE:如果當前列表已經打開,則收攏之;如果已經收攏,則打開;
選擇所單擊的內容
void CPppView::OnSelchangingTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CTreeCtrl* pTree2 = (CTreeCtrl*) GetDlgItem(IDC_TREE1);//
HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
CPppDoc* pDoc = (CPppDoc*)GetDocument();//一切都以文檔傳輸
CString hParentName;
HTREEITEM hParent=pTree2->GetParentItem(hSelected); //
if(hSelected!=NULL)
{
pDoc->Name=pTree2->GetItemText(hSelected);// Name在文檔裏定義
}
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.組合框控件:
int GetCurSel() const 得到當前選項的索引,
失敗則返回CB_ERR。
Int SetCurSel(int nSelect);
如果函數調用成功,返回當前選項索引。如果nSelect的值超出範圍,或爲-1,則返回CB_ERR,並清除當前選項。
int GetLBText(int nIndex,Cstring& rString ) const
void GetLBText(int nIndex, LPTSTR lpszText) const
如果函數調用成功,則返回字符串的字節長度(不包括末尾的空字符)。如果nIndex並非合法的索引,則返回CB_ERR。
nIndex----指定將獲取文本選項的索引。
LpszText---指定將用以存放所得文本的緩衝區指針。該緩衝區必須足夠容納要獲取的文本及其結尾空字符。
rString:用於存放所的文本的Cstring對象
int GetLBTextLen( int nIndex) const
如果函數調用成功,則返回字符串的字節長度(不包括末尾的空字符)。如果nIndex並非合法的索引,則返回CB_ERR。
nIndex----指定將獲取組合框選項的索引。
-----------------------------------------------------------
ComboBox(下拉框)的用法:
CComboBox m_cob;
CString m_Getstring;
m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);//把選擇的內容傳給m_Getstring
void CBaDialog::OnTimer(UINT nIDEvent)
{ //設置列表框的選擇 當再一次選擇時 重新設置按鈕的屬性
// TODO: Add your message handler code here and/or call default
CString m_string;
m_cob.GetLBText(m_cob.GetCurSel(),m_string);
if(m_Getstring!=m_string)
{
GetDlgItem(IDC_STATR)->EnableWindow(TRUE);
this->Enable(FALSE);
}
CDialog::OnTimer(nIDEvent);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3.BUTTON
操作函數:
HICON SetIcon(HICON hIcon); 如果函數操作成功,返回先前與按鈕聯繫的圖標句柄。
以鏈表的方式實現了主界面所有Button的初始化
// 設置按鈕風格
// 將其單獨定義而不是在ClassWizard中定義,參看InitBuffonStyle();
private:
CButtonStyle m_Setting, m_ListItem, m_Addition, m_Remove,
m_Modify, m_Search, m_About, m_Exit,
m_Previous, m_Next, m_End, m_Home,
m_Goto, m_Jump;
void CMagicWordDlg::InitButtonStyle()
{
CList< CButtonStyle*, CButtonStyle* > ButtonList;
//ButtonList.AddTail( &m_Setting );
ButtonList.AddTail( &m_ListItem );
ButtonList.AddTail( &m_Addition );
ButtonList.AddTail( &m_Remove );
ButtonList.AddTail( &m_Modify );
ButtonList.AddTail( &m_Search );
ButtonList.AddTail( &m_About );
ButtonList.AddTail( &m_Exit );
ButtonList.AddTail( &m_Previous );
ButtonList.AddTail( &m_Next );
ButtonList.AddTail( &m_End );
ButtonList.AddTail( &m_Home );
ButtonList.AddTail( &m_Goto );
ButtonList.AddTail( &m_Jump );
// 用循環實現必須手動改動Resource.h中的定義
for ( int nIco = IDI_JUMP, nBtn = IDC_JUMP; nBtn >= IDC_LISTITEM; nIco--, nBtn-- )
{
CButtonStyle *Button = ButtonList.RemoveTail();
Button->SubclassDlgItem( nBtn, this );
Button->SetIcon( nIco );
Button->SetInactiveBgColor();
Button->SetInactiveFgColor();
Button->SetActiveBgColor();
}
}
使按鈕不可用
BOOL m_bS;
m_bS = GetDlgItem(IDC_STATR)->EnableWindow(FALSE);
void CBaDialog::Enable( BOOL p)
{
BOOL HB;
HB=p;
GetDlgItem(IDC_ADD)->EnableWindow(HB);
GetDlgItem(IDC_DELECT)->EnableWindow(HB);
GetDlgItem(IDC_EDIT)->EnableWindow(HB);
GetDlgItem(IDC_FIND)->EnableWindow(HB);
GetDlgItem(IDC_ALL)->EnableWindow(HB);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
編輯控件
屬性操作函數:完成屬性的設置和查詢等操作〉
常規操作函數:完成清空編輯控件的恢復緩衝區、得到編輯控件中的被選文本等操作。
SetSel:調用該函數以設置編輯控件中的當前被選文本,其原型:
void SetSel(DWORD dwSelection,BOOL bNoScroll=FALSE);
void SetSel(int nStartChar,int nEndChar,BOOL bNoScroll=FALSE);
dwSelection
bNoScroll
nStartChar
nEndCha
bNoScroll
剪貼板操作:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////
狀態欄—CstatusBar
構造函數:完成創建狀態欄對象、設置狀態欄窗格ID等操作。
SetIndicators:調用該函數可以設置各個指示窗口的ID,其原型爲:
BOOL SetIndicators(const UINT* lpIDArray,int nIDCount);
調用成功,返回非零值,否則,零值。
lpIDArray :爲包含狀態欄指示窗格ID的數組。
nIDCount:指定了狀態欄指示窗格數目。
屬性操作函數:完成創建狀態欄對象、設置狀態欄分欄ID等操作。
CommandToIndex:調用該函數可以獲得給定ID值的狀態欄指示窗格索引,其原型:
Int CommandToIndex(UINT nIDFind) const;
調用成功,返回指示窗格索引,否則,返回-1.
nIDFind——指定了將獲取其索引的窗格ID。
SetPaneText:調用該函數可以設置給定指示窗格的文本,其原型:
BOOL SetPaneText(int nIndex,LPCTSTR lpszNewText,BOOL bUpdate=TRUE);
調用成功,返回非零值,否則,零值。
nIndex:指定了將設置其文本的狀態欄指示窗格索引。
lpszNewText:指定了將設置的指示窗格文本。
bUpdate:如果改參數爲TRUE,則指示窗格的顯示將被更新。
//////////////////////////////////////////////////////////
/////////////////
檢查框(Check boxes)和單選按鈕(Radio button)
Radio button:
m_radio.SetCheck(1);//選中狀態
int m_nSel;
void CSearchDlg::OnOK()
{
try
{
UpdateData();
switch(m_nSel)
{
case 0:
theApp.m_strSQL="SELECT * FROM Records WHERE date1>='"+m_strDate1+"' AND date2<='"+m_strDate2+"'";
break;
case 1:
theApp.m_strSQL="SELECT * FROM Records WHERE Name LIKE '%"+m_strName+"%'";
break;
case 2:
theApp.m_strSQL="SELECT * FROM Records WHERE College LIKE '%"+m_strCollege+"%'";
break;
case 3:
theApp.m_strSQL="SELECT * FROM Records WHERE Reason LIKE '%"+m_strReason+"%'";
break;
}
((CCcDlg*)AfxGetMainWnd())->List(theApp.m_strSQL);
}
catch(_com_error e)
{
CATCH_ERROR;
}
CDialog::OnOK();
}
//////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
對話框
隱藏和顯示對話框:ShowWindow (SW_HIDE); ShowWindow (SW_SHOW);
ShowWindow (SW_HIDE);
CAcsLogDlg loginDlg;
if (loginDlg.DoModal ()==IDOK)
{
success = TRUE;
}
else
{
success = FALSE;
ShowWindow (SW_SHOW);
}
對話框中的控件:可見(visible)風格通過調用CWnd::ShowWindow()改變可見性。
m_button.ShowWindow(SW_SHOW);//顯示按鈕
m_button.ShowWindow(SW_HIDE);//隱藏按鈕
禁止(disabled)調用CWnd::EnabledWindow()
UpdateData();參數爲TRUE時,對話框控件中的內容傳遞給數據成員,爲FALSE時反之。
SetDlgItemText(IDC_Use,"");//對話框中的編輯框清空
GetDlgItem(IDC_Use)->SetFocus();//光標停在對話框中的IDC_Use
SetDialogBkColor( RGB( 96, 160, 16 ), RGB( 255, 255, 255 ) ); // 設置對話框背景色及文本色
調用對話框
打開文件對話框
void CMediaPlayerDlg::OnOpen()
{
// TODO: Add your control notification handler code here
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|"
"All File(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
//CFileDialog fileDlg(TRUE, "mdb", "*.mdb", NULL, "Access Files(*.mdb)", NULL);
if(dlg.DoModal()==IDOK){
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_ActiveMovie.SetFileName(PathName);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////
字體
CFont m_font2;
CFont m_font1;
m_font1.CreateFont(12, 0,0,0,FW_BOLD, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋體");//加粗
/* m_font2.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋體");
*/
/////////////////////////////////////////////////////////////////
ClistCtrl類的用法:
1常規操作函數:它們可以完成向列表視圖中插入新
條目或新列等操作。
ISubItem-指定條目子索引項
BOOL DeleteAllItems()刪除列表控件中所有條目
int InsertColumn(int nCol,const LVCOLUMN * pColum)插入新列 操作成功返回新列索引
nCol-----指定新列索引。
pColum---爲LVCOLUMN結構指針,包含將插入的信息。
LVCOLUMN結構
例:m_ListCtrl.InsertColumn( 0, _T( "所有匹配的單詞" ), LVCFMT_LEFT, 115 );
int InsertItem(const LVITEM *pItem)調用該函數以
向列表中插入新條目 返回新條目索引值
pItem-------爲LVITEM結構,其中包含了將插入的條目信息
列表控制中包含兩個非常重要的數據結構LV_ITEM和LV_COLUMN。LV_ITEM用於定義列表控制的一個表項,LV_COLUMN用於定義列表控制的一個表列
例:m_ListCtrl.InsertItem( 0, WordSet.m_Word );//數據項
CString s;
s.Format("%d",m_Set.m_column1);//格式化
//int InsertItem(i,s,0)調用該函數以向列表中插入新條目 返回新條目索引值
//相當於插入新的一行 數字代表列數
m_ListCtrlx.InsertItem(i,s,0);
EnsureVisible---調用該函數以確保指定的列表視圖條目可見,其原型爲:
BOOL EnsureVisible(int nItem,BOOL bPartialOK)
返回值:
nItem:指定了必須可見的條目索引。
bPartialOK:指定了是否允許部分可見。
列表視圖控件將在必要時進行滾動,以確保指定條目可見。如果bPartialOK參數爲非零值,則當條目部分可見時,列表視圖控件不進行滾動。
2。屬性操作函數:它們可以完成對列表視圖控件的屬性的設置和查詢等操作。
DWORD SetExtendedStyle(DWORD dwNewStyle) //先設計列表風格
如果函數調用成功,則返回列表視圖控件先前所使用的
擴展風格。
LVS_EX_FULLROWSELECT-----對列表視圖中的項目進行整行選擇,即選擇某條目時,該條目的所在行都被選擇。
LVS_EX_GRIDLINES----將在列表視圖控件中繪製網格線0x21。
例:m_ListCtrl.SetExtendedStyle( LVS_EX_GRIDLINES );//將在列表視圖控件中繪製網格線0x21。
POSITION GetFirstSelectedItemPosition() const 如果函數執行成功,則返回條目的POSITION值,如果返回值爲KULL,則表示當前列表視圖控件中沒有條目選中。
Int GetNextSelectedItem(POSITION& pos) const 如果函數執行成功,則返回列表視圖控件中下一個被選中的條目索引。其中參數pos爲將接收條目POSITION值的變量。
BOOL SetColumnWidth(int nCol,int cx)
調用該函數以設置報表視圖或列表視圖中指定列的寬度。
nCol----指定了將被設置寬度的列索引。
cx-------指定了列的新寬度。
Int GetItemText(int nItem, int nSubItem,LPTSTR lpszText,int nLen) const;
CString GetItemText(int nItem, int nSubItem) const;
對於int,其返回值爲所指定的文本長度;對CString,其返回值爲包含條目文本的CString對象。
nItem--------指定將被獲取文本的條目索引
nSubItem---------指定了將被獲取文本的條目子項的索引。
lpszText---------將返回條目文本的緩衝區指針。
nLen----------指定lpszText緩衝區的長度。
如果nSubItem爲0,則函數將獲取條目的標籤,nSubItem不爲0,將獲取指定條目子項的文本。
例:
BOOL SetItemText(int nItem, int nSubItem,LPTSTR lpszText);
如果函數調用成功,則返回非零值,否則返回零值。
nItem--------指定將被設置的條目索引
nSubItem---------指定了將被設置文本的條目子項的索引。
lpszText---------指定了將被設置的新條目文本。
例:
char szTemp[27] = { '/0' };//緩衝區
POSITION Pos = m_ListCtrl.GetFirstSelectedItemPosition();
if ( Pos == NULL ) return;
int nCurIndex = m_ListCtrl.GetNextSelectedItem( Pos );
m_Display.Empty();//文本編輯框
m_ListCtrl.GetItemText( nCurIndex, 0, szTemp, 26 );
CImageList:圖像列表
CImagelist* GetImageList(int nImageList) const;
如果函數執行成功,則返回列表視圖控件的圖像列表指針。
nImageList----指定了將獲得的圖像列表類型。
LVSIL_NORMAL---獲取大圖標圖像列表指針
LVSIL_SMALL--獲取小圖標圖像列表指針
LVSIL_STATE--獲取狀態圖像列表指針
CImageList* SetImageList(CImageList* pImageList,int nImageList);
如果函數執行成功,返回先前的圖像列表指針
參數: pImageList--指定了要設置的圖像列表指針
nImageList--指定了要設置的圖像列表類型
COLORREF GetBkColor() const; 調用該函數獲得列表視圖控件的背景顏色。
函數執行成功,返回32位RGB值
BOOL SetBkColor (COLORREF cr); 調用該函數設置列表視圖控件的背景顏色。
函數執行成功,返回非零值,否則返回零值。
CHeaderCtrl* GetHeaderCtrl(); 調用改函數以得到列表視圖控件的標頭控件指針
函數調用成功,返回列表視圖控件所使用的標頭控件指針
例:
m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_YES));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_NO));
m_list.SetImageList(&m_imagelist,LVSIL_SMALL);
m_list.SetExtendedStyle(0x21);
m_list.SetFont(&m_font1);//設置全部字體
// m_list.GetHeaderCtrl()->SetFont(&m_font1);//只設置標頭控件的字體
//以下函數與文本有關
m_list.SetBkColor(RGB(247,247,0));
m_list.SetTextColor(RGB(255,255,255));//設置列表視圖控件的文本顏色
m_list.SetTextBkColor(RGB(0,0,255));//設置列表視圖控件中文本背景色
m_iImageList.Create(24, 24, TRUE,1, 0);
HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_KEBIAO), IMAGE_ICON, 24, 24, 0);
m_iImageList.Add(hIcon);
m_FileTree.SetImageList ( &m_iImageList,TVSIL_NORMAL );
----------------------事例----------------------------------
實現排序:
BOOL m_Bs;
BOOL m_bIsAsc;//互斥信號量:true升序 反之降序
CDRecordset m_Set;
void Sort(BOOL isAsc=TRUE,int secol=1);
void CBaDialog::Sort(BOOL isAsc,int secol)
{
if(m_Set.IsOpen())
m_Set.Close();
this->Select(); //打開所選擇數據表
m_bSet.Close();//只對m_Set數據標排序 所以關閉m_bSet
CODBCFieldInfo fieldInfo;
m_Set.GetODBCFieldInfo(secol,fieldInfo);//返回紀錄集中字段的特定種類的信息 即所選
擇的信息
if(isAsc)//實現排序功能
{
m_Set.m_strSort=fieldInfo.m_strName+" ASC";//order by
m_bIsAsc=TRUE;
}
else
{
m_Set.m_strSort=fieldInfo.m_strName+" DESC";
m_bIsAsc=FALSE;
}
m_Set.Requery();
}
//單擊索引
void CBaDialog::OnColumnclickList3(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;//系統自動生成
// TODO: Add your control notification handler code here
if(FALSE== m_bS)
{
int k= pNMListView->iSubItem; //鼠標單擊選擇第幾行
Sort(!m_bIsAsc, k);
m_ListCtrlx.DeleteAllItems();
this->Show();//把數據庫學生的數據表內容顯示
}
*pResult = 0;
}
右鍵單擊事件
void CCCDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到當前選中的行
if(pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
CPoint pt;
::GetCursorPos(&pt);
COfficeXPMenu m_menu;
m_menu.LoadMenu(IDR_MENU_LIST);
COfficeXPMenu::SetType(TYPE_XP); //設置菜單的風格,(TYPE_XP, TYPE_NORMAL)
COfficeXPMenu *psub = (COfficeXPMenu *)m_menu.GetSubMenu(0);
DWORD dwID =psub->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y ,this);
m_menu.DestroyMenu();
}
*pResult = 0;
}
列表雙擊事件(實現在編輯框中顯示內容)
// 雙擊則顯示顯示信息
void CListItemDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
CWordDaoSet WordSet;
CString strSQL;
CString strNewLine( "/r/n" );//回車換行
char szTemp[27] = { '/0' };
//得到雙擊列的位置
POSITION Pos = m_ListCtrl.GetFirstSelectedItemPosition();
if ( Pos == NULL ) return;
int nCurIndex = m_ListCtrl.GetNextSelectedItem( Pos );
m_Display.Empty();
m_ListCtrl.GetItemText( nCurIndex, 0, szTemp, 26 );
strSQL.Format( "SELECT * FROM WordList WHERE word = '%s'", szTemp );
if ( WordSet.IsOpen() )
WordSet.Close();
WordSet.Open( AFX_DAO_USE_DEFAULT_TYPE, strSQL, 0 );
if ( !WordSet.IsEOF() )
{
if ( !WordSet.m_Explain0.IsEmpty() )
m_Display += WordSet.m_Explain0 ;//字符串相加
if ( !WordSet.m_Explain1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Explain1 );
if ( !WordSet.m_Explain2.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Explain2 );
if ( !WordSet.m_Phrase0.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase0 );
if ( !WordSet.m_Phrase1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase1 );
if ( !WordSet.m_Phrase2.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Phrase2 );
if ( !WordSet.m_Sentence0.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Sentence0 );
if ( !WordSet.m_Sentence1.IsEmpty() )
m_Display += ( strNewLine + WordSet.m_Sentence1 );
}
if ( WordSet.IsOpen() )
WordSet.Close();
UpdateData( FALSE );//在編輯框中顯示文本
*pResult = 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
void CCcDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) //雙擊list控件的函數
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到當前選中的行
if(pos) //如果選中一行
{
int nItem = m_list.GetNextSelectedItem(pos);
CAddDlg dlgadd;
dlgadd.m_bAddOrModify=1; //修改記錄的標誌
if(m_list.GetItemText(nItem,0)=="N")
dlgadd.m_bPassed=false; //單項按鈕
else
dlgadd.m_bPassed=true;
dlgadd.m_strName=m_list.GetItemText(nItem,1);
dlgadd.m_strCollege =m_list.GetItemText(nItem,2);
dlgadd.m_strReason =m_list.GetItemText(nItem,3);
dlgadd.m_date1 =m_list.GetItemText(nItem,4);
dlgadd.m_date2 =m_list.GetItemText(nItem,5);
dlgadd.m_strRemark =m_list.GetItemText(nItem,6);
dlgadd.DoModal();
}
*pResult = 0;
}
////////
CListCtrl中選擇變化時如何獲得通知?
我在Report View中使用了一個CListCtrl(自繪製類型),我想知道什麼時候選擇項發生了改變.
在選擇項變化時,可以使用按鈕有效或失效,按如下操作:
加入LVN_ITEMCHANGED消息處理.
void CYourClassNameHere::OnItemchangedEventList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
if (pNMListView->uChanged == LVIF_STATE)
{
if (pNMListView->uNewState)
GetDlgItem(IDC_DELETE)->EnableWindow(TRUE);
else
GetDlgItem(IDC_DELETE)->EnableWindow(FALSE);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
樹視圖控件-樹視圖控件
屬性設置-style:有按鈕、有行、line at root 、邊框;more style:卷軸、工具欄提示。
屬性操作函數
。GetParentItem:調用該函數得到指定樹視圖條目的父條目.
HTREEITEM GetParentItem(HTREEITEM hItem);
hItem:指定條目句柄。
常規操作函數
.InsertItem:向樹形控件插入新條目
/* TVINSERTSTRUCT tvInsert; //d第一中插入方法
tvInsert.hParent = NULL;//指定了父條目句柄,參數爲TVI_ROOT或NULL,則該條目被插入控件的根部
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("VC知識庫www.vckbase.com");
HTREEITEM hCountry = m_CtrlTree.InsertItem(&tvInsert);*/
//第二種方法
HTREEITEM hCountry = m_CtrlTree.InsertItem( _T("VC知識庫www.vckbase.com"), NULL, NULL);//根目錄
HTREEITEM hPA = m_CtrlTree.InsertItem(TVIF_TEXT,_T("程序員社區"), 0, 0, 0, 0, 0, hCountry, NULL);//二級目錄
HTREEITEM hWA = m_CtrlTree.InsertItem(_T("文檔代碼中心"),0, 0, hCountry, hPA);// 二級目錄
// m_CtrlTree.InsertItem(_T("程序員論壇"),0, 0, hPA, TVI_SORT);//三級目錄
m_CtrlTree.InsertItem(_T("程序員論壇"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("程序員交友"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("人才交流"), hPA, TVI_SORT);
m_CtrlTree.InsertItem(_T("文檔中心"), hWA, TVI_SORT); //三級目錄
m_CtrlTree.InsertItem(_T("代碼倉庫"), hWA, TVI_SORT);
m_CtrlTree.InsertItem(_T("個人專輯"), hWA, TVI_SORT);
m_CtrlTree.Expand(hCountry,TVE_EXPAND);
。GetItemText:得到指定條目的文本
。SetItemText
.Expand:調用該函數以展開或收攏指定條目的子條目。
BOOL Expand(HTREEITEM hItem,UINT nCode);
函數成功,返回非零值,否則返回零值。
hItem:指定將打開或收攏的條目句柄。
nCode:指定了採取的操作,如下:
TVE_COLLAPSE:收攏列表
TVE_COLLAPSERESET:收攏列表,並刪除子條目
TVE_EXPAND:打開列表
TVE_TOGGLE:如果當前列表已經打開,則收攏之;如果已經收攏,則打開;
選擇所單擊的內容
void CPppView::OnSelchangingTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CTreeCtrl* pTree2 = (CTreeCtrl*) GetDlgItem(IDC_TREE1);//
HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
CPppDoc* pDoc = (CPppDoc*)GetDocument();//一切都以文檔傳輸
CString hParentName;
HTREEITEM hParent=pTree2->GetParentItem(hSelected); //
if(hSelected!=NULL)
{
pDoc->Name=pTree2->GetItemText(hSelected);// Name在文檔裏定義
}
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.組合框控件:
int GetCurSel() const 得到當前選項的索引,
失敗則返回CB_ERR。
Int SetCurSel(int nSelect);
如果函數調用成功,返回當前選項索引。如果nSelect的值超出範圍,或爲-1,則返回CB_ERR,並清除當前選項。
int GetLBText(int nIndex,Cstring& rString ) const
void GetLBText(int nIndex, LPTSTR lpszText) const
如果函數調用成功,則返回字符串的字節長度(不包括末尾的空字符)。如果nIndex並非合法的索引,則返回CB_ERR。
nIndex----指定將獲取文本選項的索引。
LpszText---指定將用以存放所得文本的緩衝區指針。該緩衝區必須足夠容納要獲取的文本及其結尾空字符。
rString:用於存放所的文本的Cstring對象
int GetLBTextLen( int nIndex) const
如果函數調用成功,則返回字符串的字節長度(不包括末尾的空字符)。如果nIndex並非合法的索引,則返回CB_ERR。
nIndex----指定將獲取組合框選項的索引。
-----------------------------------------------------------
ComboBox(下拉框)的用法:
CComboBox m_cob;
CString m_Getstring;
m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);//把選擇的內容傳給m_Getstring
void CBaDialog::OnTimer(UINT nIDEvent)
{ //設置列表框的選擇 當再一次選擇時 重新設置按鈕的屬性
// TODO: Add your message handler code here and/or call default
CString m_string;
m_cob.GetLBText(m_cob.GetCurSel(),m_string);
if(m_Getstring!=m_string)
{
GetDlgItem(IDC_STATR)->EnableWindow(TRUE);
this->Enable(FALSE);
}
CDialog::OnTimer(nIDEvent);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3.BUTTON
操作函數:
HICON SetIcon(HICON hIcon); 如果函數操作成功,返回先前與按鈕聯繫的圖標句柄。
以鏈表的方式實現了主界面所有Button的初始化
// 設置按鈕風格
// 將其單獨定義而不是在ClassWizard中定義,參看InitBuffonStyle();
private:
CButtonStyle m_Setting, m_ListItem, m_Addition, m_Remove,
m_Modify, m_Search, m_About, m_Exit,
m_Previous, m_Next, m_End, m_Home,
m_Goto, m_Jump;
void CMagicWordDlg::InitButtonStyle()
{
CList< CButtonStyle*, CButtonStyle* > ButtonList;
//ButtonList.AddTail( &m_Setting );
ButtonList.AddTail( &m_ListItem );
ButtonList.AddTail( &m_Addition );
ButtonList.AddTail( &m_Remove );
ButtonList.AddTail( &m_Modify );
ButtonList.AddTail( &m_Search );
ButtonList.AddTail( &m_About );
ButtonList.AddTail( &m_Exit );
ButtonList.AddTail( &m_Previous );
ButtonList.AddTail( &m_Next );
ButtonList.AddTail( &m_End );
ButtonList.AddTail( &m_Home );
ButtonList.AddTail( &m_Goto );
ButtonList.AddTail( &m_Jump );
// 用循環實現必須手動改動Resource.h中的定義
for ( int nIco = IDI_JUMP, nBtn = IDC_JUMP; nBtn >= IDC_LISTITEM; nIco--, nBtn-- )
{
CButtonStyle *Button = ButtonList.RemoveTail();
Button->SubclassDlgItem( nBtn, this );
Button->SetIcon( nIco );
Button->SetInactiveBgColor();
Button->SetInactiveFgColor();
Button->SetActiveBgColor();
}
}
使按鈕不可用
BOOL m_bS;
m_bS = GetDlgItem(IDC_STATR)->EnableWindow(FALSE);
void CBaDialog::Enable( BOOL p)
{
BOOL HB;
HB=p;
GetDlgItem(IDC_ADD)->EnableWindow(HB);
GetDlgItem(IDC_DELECT)->EnableWindow(HB);
GetDlgItem(IDC_EDIT)->EnableWindow(HB);
GetDlgItem(IDC_FIND)->EnableWindow(HB);
GetDlgItem(IDC_ALL)->EnableWindow(HB);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
編輯控件
屬性操作函數:完成屬性的設置和查詢等操作〉
常規操作函數:完成清空編輯控件的恢復緩衝區、得到編輯控件中的被選文本等操作。
SetSel:調用該函數以設置編輯控件中的當前被選文本,其原型:
void SetSel(DWORD dwSelection,BOOL bNoScroll=FALSE);
void SetSel(int nStartChar,int nEndChar,BOOL bNoScroll=FALSE);
dwSelection
bNoScroll
nStartChar
nEndCha
bNoScroll
剪貼板操作:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////
狀態欄—CstatusBar
構造函數:完成創建狀態欄對象、設置狀態欄窗格ID等操作。
SetIndicators:調用該函數可以設置各個指示窗口的ID,其原型爲:
BOOL SetIndicators(const UINT* lpIDArray,int nIDCount);
調用成功,返回非零值,否則,零值。
lpIDArray :爲包含狀態欄指示窗格ID的數組。
nIDCount:指定了狀態欄指示窗格數目。
屬性操作函數:完成創建狀態欄對象、設置狀態欄分欄ID等操作。
CommandToIndex:調用該函數可以獲得給定ID值的狀態欄指示窗格索引,其原型:
Int CommandToIndex(UINT nIDFind) const;
調用成功,返回指示窗格索引,否則,返回-1.
nIDFind——指定了將獲取其索引的窗格ID。
SetPaneText:調用該函數可以設置給定指示窗格的文本,其原型:
BOOL SetPaneText(int nIndex,LPCTSTR lpszNewText,BOOL bUpdate=TRUE);
調用成功,返回非零值,否則,零值。
nIndex:指定了將設置其文本的狀態欄指示窗格索引。
lpszNewText:指定了將設置的指示窗格文本。
bUpdate:如果改參數爲TRUE,則指示窗格的顯示將被更新。
//////////////////////////////////////////////////////////
/////////////////
檢查框(Check boxes)和單選按鈕(Radio button)
Radio button:
m_radio.SetCheck(1);//選中狀態
int m_nSel;
void CSearchDlg::OnOK()
{
try
{
UpdateData();
switch(m_nSel)
{
case 0:
theApp.m_strSQL="SELECT * FROM Records WHERE date1>='"+m_strDate1+"' AND date2<='"+m_strDate2+"'";
break;
case 1:
theApp.m_strSQL="SELECT * FROM Records WHERE Name LIKE '%"+m_strName+"%'";
break;
case 2:
theApp.m_strSQL="SELECT * FROM Records WHERE College LIKE '%"+m_strCollege+"%'";
break;
case 3:
theApp.m_strSQL="SELECT * FROM Records WHERE Reason LIKE '%"+m_strReason+"%'";
break;
}
((CCcDlg*)AfxGetMainWnd())->List(theApp.m_strSQL);
}
catch(_com_error e)
{
CATCH_ERROR;
}
CDialog::OnOK();
}
//////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
對話框
隱藏和顯示對話框:ShowWindow (SW_HIDE); ShowWindow (SW_SHOW);
ShowWindow (SW_HIDE);
CAcsLogDlg loginDlg;
if (loginDlg.DoModal ()==IDOK)
{
success = TRUE;
}
else
{
success = FALSE;
ShowWindow (SW_SHOW);
}
對話框中的控件:可見(visible)風格通過調用CWnd::ShowWindow()改變可見性。
m_button.ShowWindow(SW_SHOW);//顯示按鈕
m_button.ShowWindow(SW_HIDE);//隱藏按鈕
禁止(disabled)調用CWnd::EnabledWindow()
UpdateData();參數爲TRUE時,對話框控件中的內容傳遞給數據成員,爲FALSE時反之。
SetDlgItemText(IDC_Use,"");//對話框中的編輯框清空
GetDlgItem(IDC_Use)->SetFocus();//光標停在對話框中的IDC_Use
SetDialogBkColor( RGB( 96, 160, 16 ), RGB( 255, 255, 255 ) ); // 設置對話框背景色及文本色
調用對話框
打開文件對話框
void CMediaPlayerDlg::OnOpen()
{
// TODO: Add your control notification handler code here
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|"
"All File(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
//CFileDialog fileDlg(TRUE, "mdb", "*.mdb", NULL, "Access Files(*.mdb)", NULL);
if(dlg.DoModal()==IDOK){
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_ActiveMovie.SetFileName(PathName);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////
字體
CFont m_font2;
CFont m_font1;
m_font1.CreateFont(12, 0,0,0,FW_BOLD, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋體");//加粗
/* m_font2.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋體");
*/
/////////////////////////////////////////////////////////////////
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.