社区
界面
帖子详情
============= 请教CFormView的问题 ===========
popyyb
2004-01-11 10:35:21
请问各位在基于CFormView的MDI中,什么时候才是CFormView创建完成,因为我想在FormView上动态创建控件,因此必然要知道很是创建好(其句柄不为NULL),这样我才能在上面Create我的控件,谢谢
...全文
48
14
打赏
收藏
============= 请教CFormView的问题 ===========
请问各位在基于CFormView的MDI中,什么时候才是CFormView创建完成,因为我想在FormView上动态创建控件,因此必然要知道很是创建好(其句柄不为NULL),这样我才能在上面Create我的控件,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
platinum15
2004-01-16
打赏
举报
回复
不会也来up
popyyb
2004-01-16
打赏
举报
回复
up
DotLSong
2004-01-16
打赏
举报
回复
写在 CFormView::OnCreate 中
或者在 CFormView::OnInitialUpdate 的最开始的时候
hahu
2004-01-11
打赏
举报
回复
WM_CREATE消息
hahu
2004-01-11
打赏
举报
回复
int CMyFormView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
ASSERT(m_hWnd!=NULL);
m_edit.Create(NULL,CRect(10,10,200,30),this,IDC_EDIT3);
m_edit.ShowWindow(SW_SHOW);
return 0;
}
popyyb
2004-01-11
打赏
举报
回复
奇怪,高人哪里去了?还是没有人会?
popyyb
2004-01-11
打赏
举报
回复
因为View也是我通过读文件中的大小动态建立的,谢谢
popyyb
2004-01-11
打赏
举报
回复
那我的写法到底错在哪里呢?
ficher
2004-01-11
打赏
举报
回复
对不起错了,
上面代码最后一句
btn.pView=(CView*)this;
ficher
2004-01-11
打赏
举报
回复
在CMyButton 里加一个CView *pView 成员变量,在create
之后btn.pView=(CView*)GetParent();不就行了吗
btnMove.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(100,100,300,150), this,1);
btn.pView=(CView*)GetParent();
popyyb
2004-01-11
打赏
举报
回复
这样的话,楼上大侠的意思就是每次用到时候都要CView *pView=(CView*)GetParent();
而无法一次获得了?
hahu
2004-01-11
打赏
举报
回复
当鼠标在按钮上面移动的时候 TRACE出来的是CMyFormView
如果希望捕获整个View中的移动最好在CMyFormView中实现OnMouseMove
hahu
2004-01-11
打赏
举报
回复
为什么要用
pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
pView = (CResEditorView *) pChild->GetActiveView();
来获得View的指针呢
我是这样实现的
//OnCreate在OnInitUpdate前面实现,可以通过TRACE看出来
int CMyFormView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
TRACE("OnCreate(LPCREATESTRUCT lpCreateStruct) \n");
m_btnMove.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(100,100,300,150), this, 1);
m_btnMove.ShowWindow(SW_SHOW);
return 0;
}
void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
CView *pView=(CView*)GetParent();
TRACE("%s\n",pView->GetRuntimeClass()->m_lpszClassName);
CButton::OnMouseMove(nFlags, point);
}
可以通过GetParent来获取你要的View的指针
popyyb
2004-01-11
打赏
举报
回复
楼上的,感谢回复,我明白你的意思,但是CMyButton是我自己的类,在里面要用到view指针,因为我生成Button后希望能够立即点中,我现在就是可以show出来,但是点中不可以,因为在CMyButton类的LButton函数中用到了pview指针,也就是说在创建这个Button时候由于OnInitialUpdate函数还没有执行完毕,因此formView的handle并不能正确传到我的Button类中,因为执行顺序是先执行MyButton类的构造,然后再结束FormView的initailUpdate()
,谢谢, 继续求解
请教
关于C
Form
View
窗体大小的控制
http://topic.csdn.net/u/20070515/10/4ad392bf-211a-44ae-ac85-71e5ef859ffc.html
请教
关于C
Form
View
窗体大小的控制[
问题
点数:100分,结帖人:devinside] PreCreateWindow()中设置的CX,CY并不是没有用,有可能你在App::InitInstance()中用了ShowWindow(SW...
vc编程经验总结
作者:风中的流沙 出处:http://blog.vckbase.com/flowsand/archive/2006/01/27/17448.html VC常见入门
问题
总结1:fatal error C1010: unexpected end of file while looking for precompiled header directive该如何解决 如果发生
VC小知识总结1
1)当文档被修改时,如何在标题上加上标志*?重载CDocument类的虚函数virtual SetModifiedFlag: void CTest2Doc::SetModifiedFlag(BOOL bModified){ CString strTitle = GetTitle(); CString strDirtyFlag = " *"; // note space before
VC小知识(转)
(1) 如何通过代码获得应用程序主窗口的 指针?
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。
AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)
//使程序最大化.
(2) 确定应用程序的路径
Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。
Example:
TCHAR
VC++ 知识小结(续)
1)当文档被修改时,如何在标题上加上标志'*'?重载CDocument类的虚函数virtual SetModifiedFlag: void CTest2Doc::SetModifiedFlag(BOOL bModified){CString strTitle = GetTitle();CString strDirtyFlag = " *"; // note...
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章