一 创建一个frame,连同view和menu. 区别于template的另一种我不知道的方法。
void CReportSampleView::OnTestTasklist()
{
//CFrameWnd* m_pTaskFrame;
if (m_pTaskFrame)
{
m_pTaskFrame->ActivateFrame();
return;
}
CCreateContext contextT;
// if no context specified, generate one from the
// currently selected client if possible.
contextT.m_pLastView = NULL;
contextT.m_pCurrentFrame = NULL;
contextT.m_pNewDocTemplate = NULL;
contextT.m_pCurrentDoc = NULL;
//class CTaskListView : public CXTPReportView
contextT.m_pNewViewClass = RUNTIME_CLASS(CTaskListView);
// contextT.m_pNewViewClass = RUNTIME_CLASS(CReportSampleView);
//class CTaskListFrame : public CXTPFrameWnd
m_pTaskFrame = new CTaskListFrame(this);
DWORD dwStyle = WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE;
m_pTaskFrame->LoadFrame(IDR_TASKLIST, dwStyle, 0, &contextT);
m_pTaskFrame->InitialUpdateFrame(NULL, FALSE);
m_pTaskFrame->ShowWindow(SW_SHOW);
}
二
IListViewPtr 包含在#include "mscomctl.tlh"中。
IListViewPtr m_spListView;
GetDlgControl( IDC_LIST_INSDATA, __uuidof(IListView), (void**)&m_spListView);
三
window::Attach()
attch()和getdlgcontrol()效果一样吗?
不一样.
attach: 在MFC中, 可以用DDC来为一个标准控件生成一个变量, 使用该变量可以操作这个控件. 但是在ATL工程, 我们不能这样做. 我们使用attach()函数来实现同样的目的.
当我们操作ActiveX Control时, 我们使用getdlgcontrol()来为该控件生成一个变量, 从而用它来操作该控件.