如题:
m_View.Create(LPCTSTR("CCrystalReportViewer9"),LPCTSTR("asdf..."),WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE ,rect ,this,NULL);
第4个参数用来设定水晶报表在文档视图中显示的大小。但是没有办法对大小进行调整,当我将整个软件的窗口双击成最大化后,水晶报表显示的区域还是刚开始创建的那么大,
希望可以随着外面大小的调整而改变。
m_View.Create(LPCTSTR("CCrystalReportViewer9"),LPCTSTR("asdf..."),WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE ,rect ,this,NULL);
第4个参数用来设定水晶报表在文档视图中显示的大小。但是没有办法对大小进行调整,当我将整个软件的窗口双击成最大化后,水晶报表显示的区域还是刚开始创建的那么大,
希望可以随着外面大小的调整而改变。
BOOL bRepaint = TRUE);
我的水晶报表是从这里得到的:
CRect rect;
GetClientRect(&rect);
那么这里面void MoveWindow(int x, int y, int nWidth, int nHeight,
BOOL bRepaint = TRUE);
参数要怎样设置呢??
我的vc里只提供了两种:
void MoveWindow(int x, int y, int nWidth, int nHeight,
BOOL bRepaint = TRUE);
void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
帮助文件里是这么写的:
BOOL MoveWindow(
int x,
int y,
int nWidth,
int nHeight,
BOOL bRepaint = TRUE
) throw();
BOOL MoveWindow(
LPCRECT lpRect,
BOOL bRepaint = TRUE
) throw();
为什么?我不能输入窗体句柄为什么?
里面调用这个函数,句柄要怎样的出来呢??
没有用m_View啊。刚才我说了,不是在dialog下,所以就没有控件水晶报表是加在文档模式下,放在了OnDraw里面了
void CMyAppView::OnDraw(CDC* pDC/*pDC*/)
{
CRect rect;
GetClientRect(&rect);
m_View.Create(LPCTSTR("CCrystalReportViewer9"),LPCTSTR("asdf..."),WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE ,rect ,this,NULL); //这里创建了水晶报表的视图窗口,也设置了大小
m_Application.CreateInstance (__uuidof(Application));
…
这里是对水晶报表的设置
…}但是这样做的时候,就没有办法让水晶报表的显示区域随着文档菜单的大小而改变了。于是就找大家的方法,加了MoveWindow,可以在走OnDraw的时候走这个函数,调整大小:
MoveWindow( 0,0,( rect.right - rect.left ),( rect.bottom - rect.top ),TRUE);但加了这个明显不对。
哎。大侠多看看这贴子啊,都快下班了。
“响应视图类的OnSize消息,调用控件的Movewindow函数。”
是这个吗?怎样响应视图类的OnSize消息??
h文件中怎么声明?
cpp文件中怎样定义?
我现在是这样做的响应:
cpp中
BEGIN_MESSAGE_MAP(CMy0View, CView)
……
ON_COMMAND(OnSize ,cview)
END_MESSAGE_MAP()void CMy0View::OnSize(UINT nType, int cx, int cy)
{
CMy0View My0View; CWnd::OnSize(nType, cx, cy); // Resize tree control to fill the whole view. CMy0View.MoveWindow(0, 0, cx, cy, TRUE);}
h文件中饭添加:
afx_msg void OnSize(UINT nType, int cx, int cy);
但是这样编译不过去的。
不太会写这个啊error C2440: “类型转换”: 无法从“void (__thiscall CMy0View::* )(UINT,int,int)”转换为“WORD”
error C2440: “类型转换”: 无法从“void (__thiscall CMy0View::* )(UINT,int,int)”转换为“WORD”
error C2552: “AFX_MSGMAP_ENTRY::nID”: 不能用初始值设定项列表初始化非聚合
error C2078: 初始值设定项太多
error C2065: “cview”: 未声明的标识符
我是这样做的:
(1)cpp中 :
BEGIN_MESSAGE_MAP(CMy0View, CView)
……
ON_WM_SIZE() //要加这个响应
END_MESSAGE_MAP() 然后定义函数:
void CMy0View::OnSize(UINT nType, int cx, int cy)
{
CMy0View My0View;
CRect rect;
if(RPT_Viewer_flag != 0)
{
GetClientRect(&rect);
CWnd::OnSize(nType, cx, cy); // Resize tree control to fill the whole view. m_View.MoveWindow(0, 0, (rect.right-rect.left), (rect.bottom - rect.top), TRUE);//这个是水晶报表的CCrystalReportViewer9 m_View;之前在h文件中定义的 }
} (2)h文件中声明
afx_msg void OnSize(UINT nType, int cx, int cy);
结贴了!