IE开发心得

来源:互联网 发布:it领袖峰会 编辑:程序博客网 时间:2024/04/30 11:48

1,CToolBar、CComboBoxEx、CReBar

1.1CToolBar创建方法、位图设置方法、文字设置方法、消息响应函数设置方法

 

static UINT btns[] = {ID_GO_BACK,ID_GO_FORWARD,ID_GO_DELETE,ID_GO_SEARCH};
 m_wndToolBar.Create(this);
 m_wndToolBar.SetButtons(btns,4);
 
 int i;
 CBitmap bmp;
 CImageList img;
 img.Create(32,32,ILC_COLOR,0,1);
 for(i = 0;i < 4;++i)
 {
  bmp.LoadBitmap(IDB_BACK+i);
  img.Add(&bmp,RGB(255,0,255));
  bmp.Detach();
 }

 m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
 m_wndToolBar.SetSizes(CSize(55,55),CSize(32,32));

 m_wndToolBar.SetButtonText(0,"Back");
 m_wndToolBar.SetButtonText(1,"Forward");
 m_wndToolBar.SetButtonText(2,"Stop");
 m_wndToolBar.SetButtonText(3,"Home");

 

在.h文件中声明afx void On×× ();

在.cpp文件中添加宏 ON_COMMAND(btns中的某个取值,OnXX)

在.cpp文件中实现void On×× ();

 

1.2CComboBoxEx

m_wndAddress.Create(CBS_DROPDOWN |WS_CHILD,CRect(0,0,200,120),
  this,AFX_IDW_TOOLBAR+1)

最后一个参数是其ID,消息处理时表明来源

处理ON_CBN_SELENDOK可以处理用户选中某现存项的情况

void CMainFrame::OnNewAddressEnter()
{

//获取选中项的方法
 CString str;
 m_wndAddress.GetEditCtrl()->GetWindowText(str);
 ((CIEView*)GetActiveView())->Navigate(str,0,NULL);

//插入新项的方法

 COMBOBOXEXITEM item;
 item.mask = CBEIF_TEXT;
 item.iItem = -1;
 item.pszText = (LPTSTR)(LPCTSTR)str;
 m_wndAddress.InsertItem(&item);
}

处理IDOK命令可以处理用户输入新项按回车的情况

void CMainFrame::OnNewAddress()
{
 CString str;
 m_wndAddress.GetLBText(m_wndAddress.GetCurSel(),str);
 ((CIEView*)GetActiveView())->Navigate(str,0,NULL);
}

这两个消息的处理需手动加入一些宏

在.h文件中加入afx void OnXX();

在.cpp文件中加入ON_CBN_SELENDOK(AFX_IDW_TOOLBAR+1,OnNewAddressEnter),ON_COMMAND(IDOK,OnNewAddress)

在.cpp文件中加入两个函数的实现

 

1.3CReBar

相当于一个控件容器,可以将CComboBoxEx、CToolBar通过AddBar加进去,这样就可以统一规划控件的布局

 

2,单文档应用程序中CFrameWnd、CDocument、CView的关系

CFrameWnd可以通过GetActiveView获取CView的指针

CView可以通过GetParent获取CFrameWnd的指针

CView可以通过GetDocument获取CDocument指针

CDocument可以通过GetFirstViewPosition和GetNextView获取CView指针

原创粉丝点击