如何在MDI程序中新建一个窗口 我想响应一个功能,然后打开这个窗口,窗口中用一个自定义控件Grid,里面存放数据,有人会么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上面是效果图,我看了一下代码(看了三天了),大致知道是这么实现的,先创建一个对话框,然后在对话框上放一个Custom ctrol,继承class MFCGridCtrl,然后为这个对话框添加类,并继承Formview,在对话框类中 通过InitBaseView 实现 m_oContext.m_pNewViewClass = RUNTIME_CLASS(CCbatBaseView);m_pCbatBaseView = (CCbatBaseView*)this->CreateView(&m_oContext);但是,,但是,,有好多错误!大侠们帮忙啊void CUPEMSMDIFrame::OnShowCbatList(){ // TODO: 在此添加命令处理程序代码 ST_DEVICE_INFO_REQ stcbatData; CRuntimeClass *pClass = RUNTIME_CLASS(CCbatFrame); CUPEMSChildWnd *pChildWnd = FindChildWnd( pClass ); if ( NULL != pChildWnd ) { //pChildWnd->SendMessage( WM_ACTIVATE ); //ShowControlBar( ( CControlBar * )( &m_wndToolBar ), TRUE, FALSE ); ErrCodeMsg( this->GetSafeHwnd(), "INFO_PERFORMANCE_STA_OPEN" ); return; } else { UINT unMenuID = GetMenuID( EN_MAINFRAME_MENU ); pChildWnd = ( CUPEMSChildWnd * )( this->CreateNewChild( pClass, unMenuID, theApp.m_hMDIMenu, theApp.m_hMDIAccel ) ); if ( NULL != pChildWnd ) { SetWinText( pChildWnd, EN_WIN_TITLE, "WIN_TITLE_STA_PERFORMANCE"); m_ChildWndList.AddTail( pChildWnd ); } else { return; } //pChildWnd->SetTitle("CBAT列表"); } ( ( CCbatFrame * )pChildWnd )->InitBaseView(); ((CCbatFrame *)pChildWnd)->SetDate(stcbatData); ShowControlBar( ( CControlBar * )( &m_wndToolBar ), TRUE, FALSE );}// #if !defined(AFX_STATISTICFRAME_H__3D3DD53D_9DB8_4A79_AB7E_CC8BD9DDF064__INCLUDED_)// #define AFX_STATISTICFRAME_H__3D3DD53D_9DB8_4A79_AB7E_CC8BD9DDF064__INCLUDED_#if _MSC_VER > 1000#pragma once#endif#include "UPEMSRichEditView.h"#include "CbatBaseView.h"// CCbatFrameclass CUserBaseView;class CCbatFrame : public CUPEMSChildWnd{ DECLARE_DYNAMIC(CCbatFrame)public: CCbatFrame(); virtual ~CCbatFrame();protected: DECLARE_MESSAGE_MAP()public: void SetDate(ST_DEVICE_INFO_REQ stcbatData); BOOL InitBaseView(); virtual void RecvMsg( EmsMsg * pMsg ); void SendMsg();protected: virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);public: afx_msg void OnClose(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);private: CCbatBaseView *m_pCbatBaseView; ST_DEVICE_INFO_REQ m_stCbatData; CCreateContext m_oContext;};//#endif// CbatFrame.cpp : 实现文件//#include "stdafx.h"#include "UPEMSClient.h"#include "CbatFrame.h"#include ".\cbatframe.h"#include "CbatBaseView.h"#include "ems_configfile.h"#include "UPEMSDevNode.h"#include "CoolDialogBar.h"#include "UPEMSTree.h"#include "UPEMSDialog.h"#include "ResManagerDlg.h"#include "UPEMSChildWnd.h"#include "UPEMSMDIFrame.h"#include "GridCtrl.h"#include "UPEMSGridCtrl.h"#include "UPEMSFormView.h"#include "UPEMSRichEditView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifextern CUPEMSClientApp theApp;extern EN_LANGUAGE g_nLanguage;// CCbatFrameIMPLEMENT_DYNAMIC(CCbatFrame, CUPEMSChildWnd)CCbatFrame::CCbatFrame() : m_pCbatBaseView(NULL){}CCbatFrame::~CCbatFrame(){ UnRegRecvCmd( EN_CMD_DEVICE_LIST ); ::SendMessage( ( (CUPEMSClientApp*)AfxGetApp() )->m_pMainWnd->GetSafeHwnd(), WM_CLOSE_CHILD_WND, ( WPARAM )this, ( LPARAM )this );}BEGIN_MESSAGE_MAP(CCbatFrame, CUPEMSChildWnd) ON_WM_CLOSE() ON_WM_CREATE()END_MESSAGE_MAP()// CCbatFrame 消息处理程序BOOL CCbatFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){ // TODO: 在此添加专用代码和/或调用基类 //return CUPEMSChildWnd::OnCreateClient(lpcs, pContext); m_oContext = *pContext; lpcs->style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; return TRUE;}void CCbatFrame::OnClose(){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CUPEMSChildWnd::OnClose();}int CCbatFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CUPEMSChildWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 return 0;}void CCbatFrame::SetDate(ST_DEVICE_INFO_REQ stcbatData){ m_stCbatData.cbatID = GET_NET_ORDER_LONG(0); m_stCbatData.unLoginID = GET_NET_ORDER_LONG(theApp.GetCurUserID()); m_stCbatData.unAccLevel = GET_NET_ORDER_LONG(theApp.GetCurUserLevel()); m_stCbatData.ulCount = GET_NET_ORDER_LONG(PAGE_MAX); m_stCbatData.ulStart = GET_NET_ORDER_LONG(0); SendMsg();}BOOL CCbatFrame::InitBaseView(){ m_oContext.m_pNewViewClass = RUNTIME_CLASS(CCbatBaseView); m_pCbatBaseView = (CCbatBaseView*)this->CreateView(&m_oContext); m_pCbatBaseView->InitGridColBase( EN_STATISTIC_WIN ); m_pCbatBaseView->OnInitialUpdate(); m_pCbatBaseView->SetFocus(); if ( !RegRecvMsg( EN_CMD_DEVICE_LIST ) ) { TRACE( "can't register the message failed!\r\n" );// ErrCodeMsg( this->GetSafeHwnd(), "INFO_EMS_REGMSG_FAILED" ); return FALSE; } return TRUE;}void CCbatFrame::SendMsg(){ int iRet;// BeginWaitCursor(); ST_DEVICE_INFO_REQ stCbatData; stCbatData = m_stCbatData; stCbatData.ulStart = GET_NET_ORDER_LONG( m_stCbatData.ulStart ); iRet = ClientSendASyncMsg(this, &stCbatData, sizeof(stCbatData), EN_CMD_DEVICE_LIST); m_stCbatData.ulStart = m_stCbatData.ulStart + PAGE_MAX; if (ERR_EMS_SUCCESS != iRet) { TRACE( "Send Asyn Msg Failed!\r\n" ); }// EndWaitCursor();}void CCbatFrame::RecvMsg( EmsMsg * pMsg ){ ST_DEVICE_INFO_RSP* cbatRSPMsg; int nMount; cbatRSPMsg = (ST_DEVICE_INFO_RSP*)pMsg->Buffer; int resultStrctureLen=sizeof(ST_DEVICE_INFO_RSP); nMount = GET_HOST_ORDER_LONG(cbatRSPMsg->ulAmount); if ( 0 >= nMount ) { ErrCodeMsg( this->GetSafeHwnd(), "INFO_NO_STATIC_DATA" ,NULL, EN_ERR_LEVEL_INFO ); return; } else { //m_pCbatBaseView->InsertStatisticData( m_nType,nMount, cbatRSPMsg ); if ( nMount >= PAGE_MAX ) { SendMsg(); } }}// #if !defined(AFX_STATISTICBASEVIEW_H__61AFAAE2_8255_4531_A448_21419B4B51D7__INCLUDED_)// #define AFX_STATISTICBASEVIEW_H__61AFAAE2_8255_4531_A448_21419B4B51D7__INCLUDED_#if _MSC_VER > 1000#pragma once#endif#ifndef __AFXEXT_H__#include <afxext.h>#endif#include "f:\anav5\新建文件夹\client\src\emsctrl\upemsgridctrl.h"// CCbatBaseView 窗体视图class CCbatBaseView : public CUPEMSFormView{ DECLARE_DYNCREATE(CCbatBaseView)protected: CCbatBaseView(); // 动态创建所使用的受保护的构造函数 virtual ~CCbatBaseView();public: enum { IDD = IDD_DIALOG_CBAT };#ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const;#endifprotected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP()public: virtual void OnInitialUpdate();public: BOOL InitBaseView(); void InsertCbatData(int nMount, ST_DEVICE_INFO_RSP* cbatInfo );// void StaExportToExcel();// void CreateReport(); CUPEMSGridCtrl *m_pGrid;};//#endif// CbatBaseView.cpp : 实现文件//#include "stdafx.h"#include "UPEMSClient.h"#include "CbatBaseView.h"#include ".\cbatbaseview.h"#include "CbatFrame.h"// CCbatBaseView#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifextern CUPEMSClientApp theApp;extern CConfigFile g_SysConfigFile;extern EN_LANGUAGE g_nLanguage;IMPLEMENT_DYNCREATE(CCbatBaseView, CUPEMSFormView)CCbatBaseView::CCbatBaseView() : CUPEMSFormView(CCbatBaseView::IDD){}CCbatBaseView::~CCbatBaseView(){}void CCbatBaseView::DoDataExchange(CDataExchange* pDX){ CUPEMSFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_CBATLIST_DATA_GRID, *m_pGrid);}BEGIN_MESSAGE_MAP(CCbatBaseView, CUPEMSFormView)END_MESSAGE_MAP()// CCbatBaseView 诊断#ifdef _DEBUGvoid CCbatBaseView::AssertValid() const{ CUPEMSFormView::AssertValid();}void CCbatBaseView::Dump(CDumpContext& dc) const{ CUPEMSFormView::Dump(dc);}#endif //_DEBUG// CCbatBaseView 消息处理程序void CCbatBaseView::OnInitialUpdate(){ CUPEMSFormView::OnInitialUpdate();// m_pGrid->SetSingleRowSelection(FALSE);// m_pGrid->SetListMode(FALSE); // TODO: 在此添加专用代码和/或调用基类}void CCbatBaseView::InsertCbatData( int nMount, ST_DEVICE_INFO_RSP* cbatInfo ){} f:\anav5\新建文件夹\client\src\cbatframe.cpp(39): error C3861: “UnRegRecvCmd”: 即使使用参数相关的查找,也未找到标识符f:\anav5\新建文件夹\client\src\cbatframe.cpp(100): error C2039: “CreateView” : 不是“CCbatFrame”的成员 f:\anav5\新建文件夹\client\src\cbatframe.h(14) : 参见“CCbatFrame”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(145): error C2039: “GetSafeHwnd” : 不是“CCbatFrame”的成员f:\anav5\新建文件夹\client\src\cbatframe.cpp(101): error C2039: “InitGridColBase” : 不是“CCbatBaseView”的成员 f:\anav5\新建文件夹\client\src\cbatbaseview.h(15) : 参见“CCbatBaseView”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(104): error C2039: “SetFocus” : 不是“CCbatBaseView”的成员 f:\anav5\新建文件夹\client\src\cbatbaseview.h(15) : 参见“CCbatBaseView”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(80): error C2248: “CMDIChildWnd::OnCreate” : 无法访问 protected 成员(在“CMDIChildWnd”类中声明) d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3682) : 参见“CMDIChildWnd::OnCreate”的声明 d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3625) : 参见“CMDIChildWnd”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(75): error C2248: “CFrameWnd::OnClose” : 无法访问 protected 成员(在“CFrameWnd”类中声明) d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3509) : 参见“CFrameWnd::OnClose”的声明 d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3315) : 参见“CFrameWnd”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(47): error C2248: “CUPEMSChildWnd::GetThisMessageMap” : 无法访问 protected 成员(在“CUPEMSChildWnd”类中声明) f:\anav5\新建文件夹\client\src\emsctrl\upemschildwnd.h(60) : 参见“CUPEMSChildWnd::GetThisMessageMap”的声明 f:\anav5\新建文件夹\client\src\emsctrl\upemschildwnd.h(19) : 参见“CUPEMSChildWnd”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(75): error C2352: “CFrameWnd::OnClose” : 非静态成员函数的非法调用 d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3509) : 参见“CFrameWnd::OnClose”的声明f:\anav5\新建文件夹\client\src\cbatframe.cpp(80): error C2352: “CMDIChildWnd::OnCreate” : 非静态成员函数的非法调用 d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3682) : 参见“CMDIChildWnd::OnCreate”的声明f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(18): error C2440: “return” : 无法从“CCbatBaseView *”转换为“CObject *” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换f:\anav5\新建文件夹\client\src\cbatframe.cpp(49): error C2440: “static_cast” : 无法从“int (__thiscall CCbatFrame::* )(LPCREATESTRUCT)”转换为“int (__thiscall CWnd::* )(LPCREATESTRUCT)” 在匹配目标类型的范围内没有具有该名称的函数f:\anav5\新建文件夹\client\src\cbatframe.cpp(48): error C2440: “static_cast” : 无法从“void (__thiscall CCbatFrame::* )(void)”转换为“void (__thiscall CWnd::* )(void)” 在匹配目标类型的范围内没有具有该名称的函数f:\anav5\新建文件夹\client\src\cbatframe.h(15): error C2504: “CUPEMSChildWnd” : 未定义基类f:\anav5\新建文件夹\client\src\cbatframe.h(15): error C2504: “CUPEMSChildWnd” : 未定义基类f:\anav5\新建文件夹\client\src\cbatbaseview.h(16): error C2504: “CUPEMSFormView” : 未定义基类f:\anav5\新建文件夹\client\src\cbatbaseview.h(16): error C2504: “CUPEMSFormView” : 未定义基类f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(22): error C2614: “CCbatBaseView” : 非法的成员初始化:“CUPEMSFormView”不是基或成员f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(31): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(18): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(35): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(49): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(44): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(58): error C2653: “CUPEMSFormView” : 不是类或命名空间名称f:\anav5\新建文件夹\client\src\cbatframe.cpp(105): error C3861: “RegRecvMsg”: 即使使用参数相关的查找,也未找到标识符f:\anav5\新建文件夹\client\src\cbatframe.cpp(122): error C2664: “ClientSendASyncMsg” : 不能将参数 1 从“CCbatFrame *const ”转换为“CEmsWnd *” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换这是编译出来的错误,首先说明一下我是参考日志查询那写的另外一个功能,日志那个地方是实现好的 你说的窗口就是一个对话框吧,可以是模式的或者非模式的,上面放一个GridView控件就可以了 现在就要把工程里的对话框都改成窗口,里面放Grid控件 奇怪的问题 如果天天上来,可以每天散40分,真是神奇啊 求救:进程隐藏失败,源码分析! 关于api函数::GlobalAlloc win2003在directX上动了什么 directdraw问题 基于对话框的MFC程序,如何设置客户区颜色? msdn下载 求助:VC中打开数据库中存的图形文件并立即显示给用户怎么办??用activeX? OpenGl做2d时遇到的问题 如何将一个模板类定义为友元类? 在WM_PAINT里使用InvalidateRect()怎么没有死循环? 难题啊,救命啊,sleep函数
上面是效果图,我看了一下代码(看了三天了),大致知道是这么实现的,先创建一个对话框,然后在对话框上放一个Custom ctrol,继承class MFCGridCtrl,然后为这个对话框添加类,并继承Formview,在对话框类中 通过InitBaseView 实现
m_oContext.m_pNewViewClass = RUNTIME_CLASS(CCbatBaseView);
m_pCbatBaseView = (CCbatBaseView*)this->CreateView(&m_oContext);
但是,,但是,,有好多错误!大侠们帮忙啊
void CUPEMSMDIFrame::OnShowCbatList()
{
// TODO: 在此添加命令处理程序代码 ST_DEVICE_INFO_REQ stcbatData; CRuntimeClass *pClass = RUNTIME_CLASS(CCbatFrame);
CUPEMSChildWnd *pChildWnd = FindChildWnd( pClass );
if ( NULL != pChildWnd )
{
//pChildWnd->SendMessage( WM_ACTIVATE );
//ShowControlBar( ( CControlBar * )( &m_wndToolBar ), TRUE, FALSE );
ErrCodeMsg( this->GetSafeHwnd(), "INFO_PERFORMANCE_STA_OPEN" );
return;
}
else
{
UINT unMenuID = GetMenuID( EN_MAINFRAME_MENU );
pChildWnd = ( CUPEMSChildWnd * )( this->CreateNewChild( pClass, unMenuID, theApp.m_hMDIMenu, theApp.m_hMDIAccel ) );
if ( NULL != pChildWnd )
{
SetWinText( pChildWnd, EN_WIN_TITLE, "WIN_TITLE_STA_PERFORMANCE");
m_ChildWndList.AddTail( pChildWnd );
}
else
{
return;
}
//pChildWnd->SetTitle("CBAT列表");
}
( ( CCbatFrame * )pChildWnd )->InitBaseView();
((CCbatFrame *)pChildWnd)->SetDate(stcbatData);
ShowControlBar( ( CControlBar * )( &m_wndToolBar ), TRUE, FALSE );
}
// #if !defined(AFX_STATISTICFRAME_H__3D3DD53D_9DB8_4A79_AB7E_CC8BD9DDF064__INCLUDED_)
// #define AFX_STATISTICFRAME_H__3D3DD53D_9DB8_4A79_AB7E_CC8BD9DDF064__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif#include "UPEMSRichEditView.h"
#include "CbatBaseView.h"
// CCbatFrameclass CUserBaseView;
class CCbatFrame : public CUPEMSChildWnd
{
DECLARE_DYNAMIC(CCbatFrame)public:
CCbatFrame();
virtual ~CCbatFrame();protected:
DECLARE_MESSAGE_MAP()public:
void SetDate(ST_DEVICE_INFO_REQ stcbatData);
BOOL InitBaseView();
virtual void RecvMsg( EmsMsg * pMsg );
void SendMsg();
protected:
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
public:
afx_msg void OnClose();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
private:
CCbatBaseView *m_pCbatBaseView;
ST_DEVICE_INFO_REQ m_stCbatData;
CCreateContext m_oContext;
};
//#endif
// CbatFrame.cpp : 实现文件
//#include "stdafx.h"
#include "UPEMSClient.h"
#include "CbatFrame.h"
#include ".\cbatframe.h"
#include "CbatBaseView.h"
#include "ems_configfile.h"
#include "UPEMSDevNode.h"
#include "CoolDialogBar.h"
#include "UPEMSTree.h"
#include "UPEMSDialog.h"
#include "ResManagerDlg.h"
#include "UPEMSChildWnd.h"
#include "UPEMSMDIFrame.h"
#include "GridCtrl.h"
#include "UPEMSGridCtrl.h"
#include "UPEMSFormView.h"
#include "UPEMSRichEditView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifextern CUPEMSClientApp theApp;
extern EN_LANGUAGE g_nLanguage;
// CCbatFrameIMPLEMENT_DYNAMIC(CCbatFrame, CUPEMSChildWnd)
CCbatFrame::CCbatFrame()
: m_pCbatBaseView(NULL)
{
}CCbatFrame::~CCbatFrame()
{
UnRegRecvCmd( EN_CMD_DEVICE_LIST );
::SendMessage( ( (CUPEMSClientApp*)AfxGetApp() )->m_pMainWnd->GetSafeHwnd(),
WM_CLOSE_CHILD_WND,
( WPARAM )this,
( LPARAM )this );
}
BEGIN_MESSAGE_MAP(CCbatFrame, CUPEMSChildWnd)
ON_WM_CLOSE()
ON_WM_CREATE()
END_MESSAGE_MAP()// CCbatFrame 消息处理程序
BOOL CCbatFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类 //return CUPEMSChildWnd::OnCreateClient(lpcs, pContext);
m_oContext = *pContext; lpcs->style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
| FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
return TRUE;
}void CCbatFrame::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 CUPEMSChildWnd::OnClose();
}int CCbatFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CUPEMSChildWnd::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码 return 0;
}
void CCbatFrame::SetDate(ST_DEVICE_INFO_REQ stcbatData)
{
m_stCbatData.cbatID = GET_NET_ORDER_LONG(0);
m_stCbatData.unLoginID = GET_NET_ORDER_LONG(theApp.GetCurUserID());
m_stCbatData.unAccLevel = GET_NET_ORDER_LONG(theApp.GetCurUserLevel());
m_stCbatData.ulCount = GET_NET_ORDER_LONG(PAGE_MAX);
m_stCbatData.ulStart = GET_NET_ORDER_LONG(0);
SendMsg();
}BOOL CCbatFrame::InitBaseView()
{
m_oContext.m_pNewViewClass = RUNTIME_CLASS(CCbatBaseView);
m_pCbatBaseView = (CCbatBaseView*)this->CreateView(&m_oContext);
m_pCbatBaseView->InitGridColBase( EN_STATISTIC_WIN ); m_pCbatBaseView->OnInitialUpdate();
m_pCbatBaseView->SetFocus();
if ( !RegRecvMsg( EN_CMD_DEVICE_LIST ) )
{
TRACE( "can't register the message failed!\r\n" );
// ErrCodeMsg( this->GetSafeHwnd(), "INFO_EMS_REGMSG_FAILED" );
return FALSE;
} return TRUE;
}void CCbatFrame::SendMsg()
{
int iRet;
// BeginWaitCursor();
ST_DEVICE_INFO_REQ stCbatData;
stCbatData = m_stCbatData;
stCbatData.ulStart = GET_NET_ORDER_LONG( m_stCbatData.ulStart );
iRet = ClientSendASyncMsg(this, &stCbatData, sizeof(stCbatData), EN_CMD_DEVICE_LIST);
m_stCbatData.ulStart = m_stCbatData.ulStart + PAGE_MAX;
if (ERR_EMS_SUCCESS != iRet)
{
TRACE( "Send Asyn Msg Failed!\r\n" );
}
// EndWaitCursor();
}void CCbatFrame::RecvMsg( EmsMsg * pMsg )
{ ST_DEVICE_INFO_RSP* cbatRSPMsg;
int nMount; cbatRSPMsg = (ST_DEVICE_INFO_RSP*)pMsg->Buffer; int resultStrctureLen=sizeof(ST_DEVICE_INFO_RSP); nMount = GET_HOST_ORDER_LONG(cbatRSPMsg->ulAmount); if ( 0 >= nMount )
{
ErrCodeMsg( this->GetSafeHwnd(), "INFO_NO_STATIC_DATA" ,NULL, EN_ERR_LEVEL_INFO );
return;
}
else
{
//m_pCbatBaseView->InsertStatisticData( m_nType,nMount, cbatRSPMsg );
if ( nMount >= PAGE_MAX )
{
SendMsg();
}
}
}
// #if !defined(AFX_STATISTICBASEVIEW_H__61AFAAE2_8255_4531_A448_21419B4B51D7__INCLUDED_)
// #define AFX_STATISTICBASEVIEW_H__61AFAAE2_8255_4531_A448_21419B4B51D7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif#ifndef __AFXEXT_H__
#include <afxext.h>
#endif
#include "f:\anav5\新建文件夹\client\src\emsctrl\upemsgridctrl.h"
// CCbatBaseView 窗体视图class CCbatBaseView : public CUPEMSFormView
{
DECLARE_DYNCREATE(CCbatBaseView)protected:
CCbatBaseView(); // 动态创建所使用的受保护的构造函数
virtual ~CCbatBaseView();public:
enum { IDD = IDD_DIALOG_CBAT };
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP()
public:
virtual void OnInitialUpdate();
public:
BOOL InitBaseView();
void InsertCbatData(int nMount, ST_DEVICE_INFO_RSP* cbatInfo );
// void StaExportToExcel();
// void CreateReport(); CUPEMSGridCtrl *m_pGrid;
};//#endif
// CbatBaseView.cpp : 实现文件
//#include "stdafx.h"
#include "UPEMSClient.h"
#include "CbatBaseView.h"
#include ".\cbatbaseview.h"
#include "CbatFrame.h"
// CCbatBaseView
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CUPEMSClientApp theApp;
extern CConfigFile g_SysConfigFile;
extern EN_LANGUAGE g_nLanguage;
IMPLEMENT_DYNCREATE(CCbatBaseView, CUPEMSFormView)CCbatBaseView::CCbatBaseView()
: CUPEMSFormView(CCbatBaseView::IDD)
{
}CCbatBaseView::~CCbatBaseView()
{
}void CCbatBaseView::DoDataExchange(CDataExchange* pDX)
{
CUPEMSFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CBATLIST_DATA_GRID, *m_pGrid);
}BEGIN_MESSAGE_MAP(CCbatBaseView, CUPEMSFormView)
END_MESSAGE_MAP()
// CCbatBaseView 诊断#ifdef _DEBUG
void CCbatBaseView::AssertValid() const
{
CUPEMSFormView::AssertValid();
}void CCbatBaseView::Dump(CDumpContext& dc) const
{
CUPEMSFormView::Dump(dc);
}
#endif //_DEBUG
// CCbatBaseView 消息处理程序void CCbatBaseView::OnInitialUpdate()
{
CUPEMSFormView::OnInitialUpdate();
// m_pGrid->SetSingleRowSelection(FALSE);
// m_pGrid->SetListMode(FALSE);
// TODO: 在此添加专用代码和/或调用基类
}void CCbatBaseView::InsertCbatData( int nMount, ST_DEVICE_INFO_RSP* cbatInfo )
{
}
f:\anav5\新建文件夹\client\src\cbatframe.cpp(100): error C2039: “CreateView” : 不是“CCbatFrame”的成员
f:\anav5\新建文件夹\client\src\cbatframe.h(14) : 参见“CCbatFrame”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(145): error C2039: “GetSafeHwnd” : 不是“CCbatFrame”的成员
f:\anav5\新建文件夹\client\src\cbatframe.cpp(101): error C2039: “InitGridColBase” : 不是“CCbatBaseView”的成员
f:\anav5\新建文件夹\client\src\cbatbaseview.h(15) : 参见“CCbatBaseView”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(104): error C2039: “SetFocus” : 不是“CCbatBaseView”的成员
f:\anav5\新建文件夹\client\src\cbatbaseview.h(15) : 参见“CCbatBaseView”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(80): error C2248: “CMDIChildWnd::OnCreate” : 无法访问 protected 成员(在“CMDIChildWnd”类中声明)
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3682) : 参见“CMDIChildWnd::OnCreate”的声明
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3625) : 参见“CMDIChildWnd”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(75): error C2248: “CFrameWnd::OnClose” : 无法访问 protected 成员(在“CFrameWnd”类中声明)
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3509) : 参见“CFrameWnd::OnClose”的声明
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3315) : 参见“CFrameWnd”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(47): error C2248: “CUPEMSChildWnd::GetThisMessageMap” : 无法访问 protected 成员(在“CUPEMSChildWnd”类中声明)
f:\anav5\新建文件夹\client\src\emsctrl\upemschildwnd.h(60) : 参见“CUPEMSChildWnd::GetThisMessageMap”的声明
f:\anav5\新建文件夹\client\src\emsctrl\upemschildwnd.h(19) : 参见“CUPEMSChildWnd”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(75): error C2352: “CFrameWnd::OnClose” : 非静态成员函数的非法调用
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3509) : 参见“CFrameWnd::OnClose”的声明
f:\anav5\新建文件夹\client\src\cbatframe.cpp(80): error C2352: “CMDIChildWnd::OnCreate” : 非静态成员函数的非法调用
d:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(3682) : 参见“CMDIChildWnd::OnCreate”的声明
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(18): error C2440: “return” : 无法从“CCbatBaseView *”转换为“CObject *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
f:\anav5\新建文件夹\client\src\cbatframe.cpp(49): error C2440: “static_cast” : 无法从“int (__thiscall CCbatFrame::* )(LPCREATESTRUCT)”转换为“int (__thiscall CWnd::* )(LPCREATESTRUCT)”
在匹配目标类型的范围内没有具有该名称的函数
f:\anav5\新建文件夹\client\src\cbatframe.cpp(48): error C2440: “static_cast” : 无法从“void (__thiscall CCbatFrame::* )(void)”转换为“void (__thiscall CWnd::* )(void)”
在匹配目标类型的范围内没有具有该名称的函数
f:\anav5\新建文件夹\client\src\cbatframe.h(15): error C2504: “CUPEMSChildWnd” : 未定义基类
f:\anav5\新建文件夹\client\src\cbatframe.h(15): error C2504: “CUPEMSChildWnd” : 未定义基类
f:\anav5\新建文件夹\client\src\cbatbaseview.h(16): error C2504: “CUPEMSFormView” : 未定义基类
f:\anav5\新建文件夹\client\src\cbatbaseview.h(16): error C2504: “CUPEMSFormView” : 未定义基类
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(22): error C2614: “CCbatBaseView” : 非法的成员初始化:“CUPEMSFormView”不是基或成员
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(31): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(18): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(35): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(49): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(44): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatbaseview.cpp(58): error C2653: “CUPEMSFormView” : 不是类或命名空间名称
f:\anav5\新建文件夹\client\src\cbatframe.cpp(105): error C3861: “RegRecvMsg”: 即使使用参数相关的查找,也未找到标识符
f:\anav5\新建文件夹\client\src\cbatframe.cpp(122): error C2664: “ClientSendASyncMsg” : 不能将参数 1 从“CCbatFrame *const ”转换为“CEmsWnd *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
这是编译出来的错误,首先说明一下我是参考日志查询那写的另外一个功能,日志那个地方是实现好的