关于CFrameWnd::OnSize问题请教 [问题点数:50分,结帖人endergo]

Bbs3
本版专家分:558
结帖率 100%
Bbs7
本版专家分:11005
Bbs3
本版专家分:558
Bbs7
本版专家分:29723
版主
Blank
红花 2009年6月 VC/MFC大版内专家分月排行榜第一
Blank
蓝花 2009年7月 VC/MFC大版内专家分月排行榜第三
Bbs3
本版专家分:558
Bbs8
本版专家分:42916
Blank
黄花 2013年6月 移动平台大版内专家分月排行榜第二
Blank
蓝花 2013年2月 移动平台大版内专家分月排行榜第三
Bbs3
本版专家分:558
关于对话框的OnSize问题
对话框为WS_POPUP的,Border为Resizingrnrn有最大化按钮,窗口在创建的时候是先发WM_INITDIALOG消息还是先发WM_SIZE消息啊?rn我在窗口中有个Group Box控件,想使他随窗口大小的改变而改变自己的大小来适应窗口。在窗口类中定义了一个CRect m_rectDlgClient;并在OnInitDialog()中rnGetClientRect(&m_rectDlgClient);rnrn然后在<em>OnSize</em>函数中加入rnvoid CXXXDlg::<em>OnSize</em>(UINT nType, int cx, int cy) rnrnrn CDialog::<em>OnSize</em>(nType, cx, cy);rn CRect rect;rn if ((m_rectDlgClient.Width() != 0) && (m_rectDlgClient.Height() != 0) && (nType != SIZE_MINIMIZED))rn rn GetDlgItem(IDC_GROUPBOX)->GetWindowRect(&rect);rn ScreenToClient(&rect);rn rect.SetRect(rect.left,rect.top,rect.right+cx-m_rectDlgClient.Width(),rect.bottom);rn GetDlgItem(IDC_GROUPBOX)->MoveWindow(&rect);rn rn rn if (nType != SIZE_MINIMIZED) rn rn GetClientRect(&m_rectDlgClient);rn rnrn为什么我在Debug模式下面运行就是正常的,而在Release模式下运行的时候说rn内存不能读啊?在这一句GetDlgItem(IDC_GROUPBOX)->GetWindowRect(&rect);rn的时候出错。。。rn而把窗口风格改成Overlapped就可以正常运行,Popup的对话框和Overlapped的对话框有什么区别吗?rnrn我在Release下在OnInitDialog和<em>OnSize</em>函数中设置断点时,程序是先在<em>OnSize</em>中先断的,请问大家是怎么回事啊?rnrn能不能给一个关于对话框的<em>OnSize</em>处理的例程,谢谢大家了
关于CFrameWnd问题
我从<em>CFrameWnd</em>派生了一个类,我用以下方法调用,报严重错误.请问如何使用rn自定义的FRAME类,能显示吗?rnclass CMyFrame :public <em>CFrameWnd</em>rnrnrnrnCMyFrame frame;rnframe.Create("CMyFrame","caption");rnrnrnrn
关于OnSize函数的问题!
CFromView 对象为什么任何操作 首个参数为什么一直是0啊.rn按照MSDN 可不是这么说的.
关于CFrameWnd类的问题
请问:<em>CFrameWnd</em>类的成员函数:rnrnCWnd* CreateView( CCreateContext* pContext, UINT nID=AFX_IDW_PANE_FIRST );rn,调用这个函数创建View的时候要指定一个ID号,但函数默认给出了一个ID号,请问这rn个ID号的意思是什么?如果我不用默认给定的ID号,而是自己定义一个ID号,两者创建rn的VIEW有什么区别吗?而且我查到有另一个ID号,AFX_IDW_PANE_LAST。rn我理解有两种:rn一是一个窗口最多可以255个VIEW,rn二是自己定义的VIEW的ID号必须在AFX_IDW_PANE_FIRST和AFX_IDW_PANE_LAST之间。rn不知我理解的对否?请各位高手赐教。rn
qt+vs 子窗口随父窗口自适应
void MacWindows::CreateWnd() { m_handContrl = new HandContrl(ui.m_MainWnd); } void MacWindows::ShowH
onSizeChange 和onMeasure方法的区别
经常看见有人在onSizeChanged 和ONMeasure两个方法中进行空间宽高获取,一直不明白有什么区别,看了看源码,发现,如果只是获取宽高,好像区别不大 onMeasure 最终是设置了一个标志位,设置measureWidth,height, onSizechanged是个空方法,但是,只要改变了大小就会调用它,例如在settop,setleft等方法都会调用 不过settop应该是...
QT 中怎样使得控件与 界面等比例变化
转自:https://github.com/exoticknight/blog-post/blob/master/python-with-Qt-application-development/python%20%C3%97%20Qt%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%20%C2%B7%202%20--%20%E7%95%8C%E9%9D%A2%E5%88%9D...
qt控件窗口大小
qt控件窗口大小
QT窗口尺寸,窗口大小和大小改变引起的事件 QResizeEvent。
来源: http://www.qtcn.org/bbs/apps.php?q=diary&a=detail&did=1277&uid=139581     来源:http://blog.csdn.net/dbzhang800/article/details/6741344?reload 操作: frameGeometry()
关于CFrameWnd::GetActiveDocument()的问题
我在CMainFrame 中调用(CMyDocument*)GetActiveDocument(),为什么返回的总是NULL?明明在程序启动时自动新建了一个文档,请各位大侠指点。
关于OnSize();
我在响应窗口<em>OnSize</em>(UINT nType, int cx, int cy)函数时,想要改变里面控件的大小,但是我在设计控件时用的单位是DLU,好象与传进来的参数cx与cy的单位不一致,应该怎么处理呢?不知道能不能换算单位。rn我设置控件大小使用MoveWindow(),可能是由于单位不一致,没有出现想要的效果。rn,有没有代码可以参考一下。比如希望控件边界与整个窗口的客户区的边界保持一定距离。rn谢谢!
关于对话框的onsize调整问题
忘单文档界面程序中添加了一个对话框rn相应对话框的wm_size的onsize 函数rn现在要求的是:左右,上下拖动对话框改变大小rn要求必须移动50个Pixel才改变对话框大小rn即,如果某一次拖动小于 50 pixel,则对话框大小不改变rn当该次拖动大于50 pixel 的时候,改变对话框大小 50pixelrn然后重新开始计数rnrn这个该怎么做呢?rn多谢!!rn
OnSize问题
我 要让group box 里的控件随窗口的变化而变化rn如何实现?rn
问一个关于ONSIZE的问题
我想ONSIZE()中有如下代码,为什么作图区域成了完全透明的呢,求解答! rnvoid CScribbleView::<em>OnSize</em>(UINT nType, int cx, int cy) rnrn CView::<em>OnSize</em>(nType, cx, cy);rn MoveWindow(500,500,500,500,1);rn rn // TODO: Add your message handler code herern rn
MFC窗体消息之尺寸被改变 OnSize()
在窗口的大小更改后,框架调用该成员函数。 afx_msg void <em>OnSize</em>(    UINT nType,     int cx,     int cy  ); 参数nType 指定请求的调整大小的类型。  此参数可以是下列值之一:     SIZE_MAXIMIZED 窗口最大化。     SIZE_MINIMIZED 窗口最小化。    SIZE_RESTOR
Qt控件大小跟随窗口调整
来自QQ群 Linux && 技术分享 311078264 打开链接加入QQ群:https://jq.qq.com/?_wv=1027&k=5Gr3bAx UI界面 控件随窗口自适应变化大小 通过Qt Creator的设计模式实现,无需增加代码。 如下图,实现对最下层tableview大小跟随窗口调整: 1、界面空白处右击,选择布局栅格布局,这会使centralWi
Qt Resize与布局的冲突?
<em>问题</em>的产生:     我用QSplitter创建一个窗口布局之后,由于使用窗口默认初始大小,显示出来的比例不是很好看,因此调用了resize进行窗口大小的调整。调整之后是获得了想要的窗口大小,但是与此同时,却发现了一个<em>问题</em>,也就是经过resize之后的窗口无法使得其中的部件自适应窗口的拉伸了,不论是上下左右,都没有自适应。     <em>问题</em>的分析:     经过长达两个小时的检查,发现如果在
编辑框控件随窗口大小变化重写OnSize()
最近在学mfc, 模仿一个记事本。文本内容用编辑框来显示。 当窗口变化时,通过以下代码,可以实现编辑框随窗口一起变化。 需要注意的是在使用编辑框指针前,一定要加上判断。因为第一次<em>OnSize</em>() 被调用时,编辑框对象还没有生成,只有窗口对象。 void CNotePadDlg::<em>OnSize</em>(UINT nType, int cx, int cy)  { CDialog::<em>OnSize</em>(
OnSize中重新设置控件的位置和尺寸,导致窗口狂闪烁,如何处理?
在<em>OnSize</em>中依次调用每个控件的MoveWindow,结果在改变主窗口的大小时,客户区狂闪,跪求解决之道!!
关于outlookbar里onsize的问题
我建了一个工程,里面用到了vs生成的在左侧的outlookbar。rnrn我又把一个有许多按钮控件的dialog,create到这个outlookbar里。rnrn现在的情况时,当我调整整个执行程序窗口的大小,譬如说缩小,rnrn这样outlookbar上有一部分的控件,就会看不见了,也不会产生滚动条。rnrn我应该怎么做?不用调整控件的大小,只是产生一个滚动条行么?
Onsize问题
切分窗口后用onsize控制比例 可出现<em>问题</em> 不知道怎么回事rnrnrnMFCSDI.exe 中的 0x782b8375 (mfc80d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00000004 时发生访问冲突 rnrnrn在线等呀 rnrnrnrnBOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)rnrn // TODO: 在此添加专用代码和/或调用基类rn CRect rect;rn GetClientRect(&rect);rnm_wndSplitter.CreateStatic(this, 2, 2 ); rnm_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CshowView1), CSize(rect.Width()/2,rect.Height()/2), pContext);rnm_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CshowView2), CSize(rect.Width()/2,rect.Height()/2), pContext);rnm_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CMshowView3), CSize(rect.Width()/2,rect.Height()/2), pContext);rnm_wndSplitter.CreateView(1, 1, RUNTIME_CLASS(CshowView4), CSize(rect.Width()/2,rect.Height()/2), pContext);rnm_bSplitterCreated=TRUE;rn return TRUE;rn rnrnrnvoid CMainFrame::<em>OnSize</em>(UINT nType, int cx, int cy)rnrn <em>CFrameWnd</em>::<em>OnSize</em>(nType, cx, cy);rnrnrn CRect rect1;rnrn GetClientRect(&rect1);rnrn if (m_bSplitterCreated)rnrn rn m_wndSplitter.SetRowInfo(0,rect1.Height()/2,10);(出错)rn m_wndSplitter.SetRowInfo(1,rect1.Height()/2,0);rn rnrn m_wndSplitter.SetColumnInfo(0,rect1.Width()/2,0);rn m_wndSplitter.SetColumnInfo(1,rect1.Width()/2,0);rnrn rnrn rnrn rn m_wndSplitter.RecalcLayout();rnrn
关于继承CFrameWnd和CView的问题
JAVA里可以自己继承Frame和JFrame类来创建一个窗口rn我想知道`在C++里如何自己继承一个<em>CFrameWnd</em>或者CView写一个窗口类rn在网上找了很多资料都没有关于如何继承<em>CFrameWnd</em>或者CView写窗口的``rn基本都是MFC里的`rn我不想用MFC就是想知道`怎么自己手写继承<em>CFrameWnd</em>或者CView来写窗口``rn
OnSize
请问在VC中<em>OnSize</em>消息响应函数中我用GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rect);怎么运行不起来rn一运行就出错 能不能介绍几个类可以方便的移动控件和改变编辑框的大小
关于OnSize函数的疑问
想实现控件大小随窗口大小的改变而改变,于是采用<em>OnSize</em>函数实现,调试时发现第一次传入的参数cx、cy是正确的,但第二次传入的cx、cy却变成了0,而此时窗口都还没呈现,为什么传入的参数是0呢?
C++创建控件并响应三部曲、设置窗口全屏、OnSize实现控件大小改变、跟踪调试顺序
一、创建控件并响应事件三步曲:添加成员变量,变量类型为所创建控件的类型,如CButton 1.手动添加 afx_msg void OnmyButton();   2.手动添加实现函数;   3.关联:MESSAGE_MAP:ON_BN_CLICKED(IDC_MYBUTTON,OnmyButton)。 二、VC设置窗口全屏显示的方法:通过设置窗口显示状态和窗口位置来使窗口全屏。 在窗
请教:CControlBar控件的onsize事件?
CControlBar控件有没有onsize事件?如果没有,那继承一个CMyControlBar类,如何创建这个事件?rnCMyControlBar控件创建成功后,在一般对话框里使用的时候,又该如何捕获这个事件?
请教一个ActiveX控件开发关于窗口的OnSize问题!谢谢!
大家好,我现在要开发一个自己的控件,控件里面封装了ESRI公司开发的MapObjects2控件(这个是搞GIS系统开发用的,是一个成熟的产品控件),封装一些常用的方法,为了以后开发方便.但是遇到一个<em>问题</em>的,<em>问题</em>是这样的:rn由于我自己的控件里面封装MapObjects2,所以,需要在我的控件大小发生变化的时候,让MaoObjects2控件充满我的控件,所以,我在我的控件的<em>OnSize</em>()里做了如下的工作:rn LRESULT <em>OnSize</em>(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)rn rn // TODO : Add Code for message handler. Call DefWindowProc if necessary.rn CRect rect;rn ::GetClientRect(m_hWnd, &rect);rn ::SetWindowPos(::GetDlgItem(m_hWnd, IDC_MAP1), HWND_BOTTOM, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER | SWP_FRAMECHANGED);rn return 0;rn rn目的是每次Size大小发生变化,就让Map控件充满整个空间区域。但是,测试发现,填充的时候获取的矩形总是拖动窗口前的矩形,也就是说,填充的结果总是Size变化前的范围,而不是变化后的范围。我不知道原因出在哪里,想了好几个方法也解决不了。希望大家帮忙。谢谢。rnrn另外,为了测试我的方法是否可行,我添加了一个 Edit 控件,然后,做了同样的工作,(完全相同的代码,一模一样,没有任何的区别)。发现 Edit 填充的范围就是Size变化后的范围,能够满足我一开始想要的效果:每次Size变化后,Edit就可以完全充满我的控件。rnrn<em>问题</em>就是这样,不知道我说清楚了没有,请各位朋友帮忙。再次感谢!
CFrameWnd::CFrameWnd 不能显示tooltips
原帖没有人恩回复,我自己不能跟新,新开一个帖子。rnrn研究了下正常的tooltips处理过程应该是rnCToolTipsCtrl CToolBarrnTTM_GETTOOLINFO ----------rnTTM_GETTOOLINFOrnTTM_ADDTOOL rnTTM_RELAYEVENT rnTTM_DELTOOL <---------------- rn我的程序却没有TTM__XXX tooltips消息,不知道消息去哪里了呢
有关dialog和CFrameWnd问题
在对话框中点击一个按钮,弹出一个基于<em>CFrameWnd</em>派生类建立的单文档界面。必须有打印,打印预览,打印设置功能。
一个在OnSize里的问题
在框架类的<em>OnSize</em>()函数中设定了分割视图的相对大小比例。拖动窗口的时候各视图可以随窗口等比例的放大或缩小。但是在按下最大化、还原按钮后却不可以实现按照等比例的改变。rnrn在<em>OnSize</em>()函数中加入了RecalcLayout()后就解决了这个<em>问题</em>。rnrn我想问:为什么拖动的时候不加RecalcLayout()没事,而最大化的时候不加RecalcLayout()就不能正常的显示呢?
OnSize()与OnPaint()的问题
<em>问题</em>背景:rn 我把对话框设置成了可以放大和缩小,放大和缩小的同时缩放我绘制的图形。 rnrn我发现一个<em>问题</em>,如果我扩大对话框的话系统就可以调用OnPaint(),如果我缩小对话框的话系统就不会调用OnPaint()。rn<em>问题</em>1:我缩小的时候如何才能调用OnPaint()啊?rn 我试过这样,让一个控件跟着右下角走,但是一运行程序就出错了。rn[code=C/C++]rnvoid CMyhDlg::<em>OnSize</em>(UINT nType, int cx, int cy) rnrn CDialog::<em>OnSize</em>(nType, cx, cy);rn //cx1=cx;cy1=cy;//只能是这里设置两个全局变量,把右下角的坐标赋值给他们,然后OnPaint()调用这两个值rn //来重绘图形。<em>问题</em>是如果我扩大对话框可以OnPaint()重绘,缩小的话系统根本不调用 //OnPaint()。如果直接用下面的语句程序直接出错。rn GetDlgItem(IDC_EDIT3)->SetWindowPos(&wndTop, cx1-200,cy1-200, 100,20, SWP_SHOWWINDOW);rnrn[/code]rnrn<em>问题</em>2:扩大对话框的话,控件是随着右下角走,但是控件经过一些绘制的图形后控件上面会留下这些图形痕迹,我想问问怎么刷新一下,让控件不会留下这种图形痕迹?
opengl中OnSize问题
我在OnDraw中画了两个图,窗口改变后只留下一个矩形,代码如下:rnrn glTranslatef(0.0,0.0,-30.0);rn glPushMatrix();rn glBegin(GL_POLYGON);rn glNormal3f(0.0,0.0,1.0);rn glVertex3f(-5.0,0.0,0.0);rn glVertex3f( 5.0,0.0,0.0);rn glVertex3f( 5.0,5.0,0.0);rn glVertex3f(-5.0,5.0,0.0);rn glEnd();rn glTranslatef(0.0,-8.0,0.0);rn auxSolidSphere(1.0);rn glPopMatrix();rn请各位大虾指点一下,谢谢rn
OnSize的奇怪问题
在多文档中我在CChildFrame的一个函数中用rnLONG l = MAKELONG(5 , 10) ;rnPostMessage(WM_SIZE , SIZE_RESTORED , l) ;rn但是发现子窗口并没有改变,而我在CChildFrame::<em>OnSize</em>()中rn得到的值确实是5和6,位什么呢?我改成SendMessage()或是直接调用rnCChildFrame::<em>OnSize</em>(SIZE_RESTORED , 5 , 10)都没有用。
求助:OnSize的使用问题
最近有个项目,需要实现两个界面的切换,两个界面的大小不同,我使用了<em>OnSize</em>的处理方式,代码如下:rnvoid CMainFrame::<em>OnSize</em>(UINT nType, int cx, int cy) rnrn CPicApp *pFjApp = (CPicApp*)AfxGetApp();rn int SysScreenX = GetSystemMetrics(SM_CXSCREEN);rn int SysScreenY = GetSystemMetrics(SM_CYSCREEN); //屏幕的像素rn if(pFjApp->ScadaMode==1) //如果等于1,改变窗口rn rn MoveWindow(0,84, SysScreenX,SysScreenY-84); //显示方式1rn rn else //否则全屏显示rn rn MoveWindow(0,0,SysScreenX,SysScreenY); //显示方式2,即全屏显示rn rnrn在处理的过程中,如果初始化为全屏显示,再切换到方式1时,没有任何<em>问题</em>,但如果初始化为显示方式1,rn再切换到方式2(即全屏)时,不能全屏显示,只是把方式1的屏幕向上移动了,下面空出一片空白。rn我也单步跟踪了,像素的获取没有发生变化,感觉这时处理时,MoveWindow不能改变窗口大小,只能改变rn位置,就算我把SysScreenY改的很大,也无济于事。rn请各位高手给个解决方法,谢谢了!
OnSize()消息问题
void CMainWindow::<em>OnSize</em>(UINT nType, int cx, int cy)rnrn <em>CFrameWnd</em>::<em>OnSize</em>(nType,cx,cy);rn.....................rnrnrn为什么<em>OnSize</em>()里面又嵌套个<em>OnSize</em>() 这代表什么意思?rnrnCMainWindow是派生一CFrandWnd类的
有关OnSize问题??
为什么我的窗口在进行<em>OnSize</em>的时候,窗口不会随着变化,只有当鼠标左键最后弹起时,才显示出最后改变的结果??到底可能是什么原因呢?rnrn我的窗口是个Wnd,不是Dlg,窗口的属性为 rn cs.style = WS_POPUPWINDOW|WS_SIZEBOX;rn cs.dwExStyle = WS_EX_NOACTIVATE;rnrn老大们,帮帮忙吧~~~
CFrameWnd类中的问题
我是新手,请问:怎样在<em>CFrameWnd</em>类中实现CDocument中的UpdateAllView函数,调用CView类中的OnUpdate函数
关于多文档界面childframe OnSize 事件的问题
我有1和MDI的程序,子窗口继承自CFormView,我在FornView 上放了1个Edit..rn我想让Edit随着Form的大小而改变(别告诉我让我继承自CEditView,我就是想试试),rn但是<em>问题</em>出现了,我在form的onsize 事件里改变edit 的大小,但是这时候程序运行时总是报错,rn可能是edit还没有被创造出来。rn于是我就想在onsize 函数里加个判别条件,if(m_hInit == true) 才改变Edit的大小,rn但是在哪里把m_hInit 设成true .合适呢?rn我在form的很多事件里都试了,总是不行。rn各位大虾,我应该怎么做,才能实现上述功能呢?
关于CFrameWnd与CDockBar,CControlBar与CDockContext的问题
CControlBar控制条的“所有者”窗口可能是主框架窗口(<em>CFrameWnd</em>类封装),也可能是弹出的简化框架窗口(CMiniDockFrameWnd间接派生于<em>CFrameWnd</em>)。rn<em>问题</em>在于父窗口:CControlBar控制条在创建的时候,一般(如MFC向导)是由<em>CFrameWnd</em>类对象创建的,即刚创建时,控制条的父窗口是<em>CFrameWnd</em>对象。 而后,经<em>CFrameWnd</em>::DockControlBar(实际上调用了CDockBar::DockControlBar)设置了控制条的父窗口为CDockBar停靠栏对象了。rn<em>问题</em>的关键是, 我阅读MSDN源代码时,并没有发现设置CDockBar对象的窗口位置和大小的语句, 而只有设置CControlBar对象位置大小的语句(都是通过SetWindowPos函数)。CDockBar对象被<em>CFrameWnd</em>创建时,位置大小是(0,0,0,0), 即父窗口不显示,为什么我可以看见子窗口(ControlBar对象窗口)呢? 是不是我哪里看漏了, 还是哪里有知识盲点?rnrn编程几年,从未研究MFC框架界面。 今天研究了一下,有好些不懂, 请高手现身,感激!rn
函数onSize()的问题
各位高手:rn 我碰见一个<em>问题</em>:我不知道控件的onSize()是什么时候系统调用的:是控件在创建完成而没有显示的时候吗?rn 还有我想对控件的字体进行设置.所以使用了WM_SETFONT消息,但我在onSetFont()函数里设置了新的字体之后,控件的字体并没有变,为什么呢?
CFrameWnd相关(界面切换)问题
碰到一个界面切换<em>问题</em>,我用了splitter 把窗口分割成左右两个,右边一个我用framewnd和HtmlView实现了一个 浏览器和一个toolbar的界面,但是在做界面切换的是否,运行发生了错误:rnvoid CLocalFrame::OnLocal() rnrn rn CMainFrame *pMainFrame=(CMainFrame*)AfxGetMainWnd();rn rn pMainFrame->m_wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CToolBarView),CSize(100,100)); rnrnrn这个是切换代码,请各位帮忙!!
重写OnSize()问题
void CDBDialogView::<em>OnSize</em>(UINT nType, int cx, int cy)rnrn CFormView::<em>OnSize</em>(nType,cx,cy);rn CRect rect;rn this->GetClientRect(&rect);rn m_tree1.SetWindowPos(&m_tree1,rect.left,rect.top,rect.Width(),rect.Height(),SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);rn return;rnrnrnCDBDialogView为CFormView派生,m_tree1是CDBDialogView的tree控件。rn调整窗口大小时tree控件怎么大小不变呢?rnrn
关于CFrameWnd非客户区重画的问题
我成功重画了<em>CFrameWnd</em>的非客户区(自己定制),可是菜单却不见了了,这会是什么原因呢?
onsize函数问题
假如我现在有个SDI程序,View是Form View,想在上面放个Tab Control,包含两个Dialog。rn[code=C/C++]rnvoid CTab_testView::OnInitialUpdate()rnrn CFormView::OnInitialUpdate();rn GetParentFrame()->RecalcLayout();rn ResizeParentToFit();rn rn //为Tab Control增加两个页面rn m_tab.InsertItem(0, _T("First"));rn m_tab.InsertItem(1, _T("Second"));rn rn //创建两个对话框rn m_page1.Create(IDD_DIALOG1, &m_tab);rn m_page2.Create(IDD_DIALOG2, &m_tab);rnrnrnrn[/code]rnrnrnrn我想知道我想在CTab_testView的onsize中调用IDD_DIALOG1的 onsize(),应该怎么做?
CControlBar Onsize问题
CControlBar 如何设置大小呢?rnrn比如,我想让它最大拉伸到200的宽度,这样应该怎么做呢?rn谢谢。rnrn他无法响应 <em>OnSize</em> 和 OnSizing。
OnSize问题!——在线等
在ListView的程序中,想把列的宽度和整个视图联系起来,ListVIew有4列,每列占客户区的1/4,可是当程序最大话后每列的宽度不变,怎么做才能使列的宽度和客户区联系起来呢,最好有范例代码!
OnSize的时候闪烁问题
rnrn在Dialog里放了很多个Btn,Static之类的控件,然后怎么做能不让他闪烁?rnrn我在Dialog的OnPaint里用了双缓冲,然后OnEraseBk()返回TRUE,rn在Static,Btn等的DrawItem里也使用了双缓冲,然后OnEraseBk()返回TRUE。但是拉动Dialog的时候还是闪烁,是怎么回事?rn怎么解决?rnrn给个例子,或则连接,成熟的程序都可以。
CFormView的OnSize问题
我有个CtestView从CFormView继承来的rn我在上面加了个ListCtrl控件rn为什么在<em>OnSize</em>函数中rn CListCtrl * plc=NULL;rn plc = (CListCtrl *)GetDlgItem(IDC_LIST2);rnrnplc得到的指针都是NULL呢?rnrnCListCtrl m_listctrl;定义变量也一样。
麻烦一下各位!关于OnSize()!
rn起动时<em>OnSize</em>(cx, cy)被执行好几次!rn请问哪次的cx, cy等于客户区大小?
CFrameWnd 边框重绘的问题
现在的<em>问题</em>是rn在任务栏点右键时会出现闪烁rn其他情况都不会闪烁rn望大虾们给小弟指点下rn在此谢了rn在这些消息上重绘了的rnWM_KILLFOCUS rnWM_SETCURSOR rn877rnWM_GETICONrnWM_INITMENUrnWM_NCCALCSIZErnWM_ACTIVATErnWM_NCPAINT rnWM_NCACTIVATE rnWM_MOVErnWM_SIZErnWM_ERASEBKGNDrnWM_ENTERIDLErnrnrn屏蔽了这些属性rnWS_CAPTION; WS_EX_DLGMODALFRAME; WS_EX_CLIENTEDGE;rnrn右键菜单没重写
关于CFrameWnd和C***View的菜鸟问题
刚刚学mfc没多久,一直没弄懂这两个类所对应的窗口的<em>问题</em>rn到底是<em>CFrameWnd</em>和C***View分别对应的窗口组合成一个平时所见的窗口,也就是<em>CFrameWnd</em>只创建一个包含工具栏状态栏菜单还有最最外面的框架的窗口, 还是<em>CFrameWnd</em>对应的窗口是一个完整的窗口,C***View对应的那个窗口只是覆盖在<em>CFrameWnd</em>对应的窗口上的中间那一块?
关于对话框添加子窗口(CFrameWnd
小弟刚开学mfc遇到个<em>问题</em>不解rnrnrn实现对话框中放个子窗口当控件使用 像按钮控件那样rnrn-----------------------------rn新建基于对话框的MFC程序 rnrn新建class CFrameExcel : public <em>CFrameWnd</em>rnrnBOOL CSdsDlg::OnInitDialog() 中插入rn CFrameExcel*cfexcel=new CFrameExcel; rncfexcel->Create(NULL,"dddd",WS_CHILD); rncfexcel->ShowWindow(SW_SHOW); rnrn为什么添加WS_CHILD属性,在他就崩了。 rnrn是 WS_CHILD不能用与ws_popup 一起使用的<em>问题</em>吗rn rn那要怎么改才可以????rn rn
问问高手关于CFrameWnd的创建
请问 rnvoid CTestView::OnInitialUpdate() rnrn CView::OnInitialUpdate();rn rn // TODO: Add your specialized code here and/or call the base classrn CRect rect;rn GetClientRect(rect);rn m_pFrame->Create(NULL,"",WS_CHILD|WS_VISIBLE|WS_BORDER,rect,this);//,NULL,0,pContext);rnrn其中m_pFrame是一个只是简单从<em>CFrameWnd</em>继承类的指针rn为什么创建的Frame的窗口被遮盖了一部分,而不是完全显示?下面被挡住了一部分rn
CwinApp和CFrameWnd
新手<em>请教</em>:rn[code=C/C++]rn#include rnrnclass CHelloApp:public CWinApprnrn public:rn virtual BOOL InitInstance();rn;rnrnCHelloApp HelloApp;rnclass CHelloWindow:public <em>CFrameWnd</em>rnrn CStatic *cs;rnpublic:rn CHelloWindow();rn;rnBOOL CHelloApp::InitInstance()rnrn m_pMainWnd=new CHelloWindow();rn m_pMainWnd->UpdateWindow(); // 1rnreturn TRUE;rnrnCHelloWindow::CHelloWindow()rnrn Create(NULL,"Hello World",WS_OVERLAPPEDWINDOW|WS_VISIBLE,CRect(0,0,200,200)); // 2rn cs=new CStatic();rn cs->Create("hello world",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(50,80,450,100),this);rnrnrn[/code]rnrn这个程序这样写的话程序和窗口都创建了,但窗口不显示。rn程序调用了注释1,但为什么不显示.在注释2后面加上 this->UpdateWindow()也不行.rn要把注释2这样写才可以显示:rnCreate(NULL,"Hello World",WS_OVERLAPPEDWINDOW|WS_VISIBLE|WS_VISIBLE,CRect(0,0,200,200));rn原因何在?rnrn还有WinMain到底在什么时候被调用,由谁调用。在所有类中起到什么作用?rnrnrn只剩32分了.
OnSize没有响应
void CAddDevCruiseSet::<em>OnSize</em>(UINT nType, int cx, int cy)rnrn CDialog::<em>OnSize</em>(nType, cx, cy);rn rn GetClientRect(m_rect);rn CRect rect2,recGroup,recBtn;rn rn if(GetDlgItem(IDC_LIST_ALL_DEVRECORD))rn rn GetDlgItem(IDC_LIST_ALL_DEVRECORD)->GetWindowRect(rect2);rn ScreenToClient(rect2);rn GetDlgItem(IDC_SET_CRUISETYPE)->GetWindowRect(recGroup);rn ScreenToClient(recGroup);rn GetDlgItem(IDC_BTN_UPDATA_ALL_DEVCRUISE)->GetWindowRect(recBtn);rn ScreenToClient(recBtn);rnrn //GetDlgItem(IDC_LIST_ALL_DEVRECORD)->MoveWindow(rect2.left ,rect2.top ,m_rect.Width ()-50,rect2.Height ());rn int tmpHeight=m_rect.Height ()-90-3*recBtn.Height();//rect2.top-hTask-5;rn GetDlgItem(IDC_LIST_ALL_DEVRECORD)->MoveWindow(rect2.left ,rect2.top ,m_rect.Width ()-30-recGroup.Width(),tmpHeight);rn GetDlgItem(IDC_BTN_UPDATA_ALL_DEVCRUISE)->MoveWindow(rect2.left,rect2.top+tmpHeight+recBtn.Height(),recBtn.Width(),recBtn.Height());rn rnrnrn我在<em>OnSize</em>函数里面设置了断点。发现,当程序刚刚启动,能运行到断点处中断。可是程序完全运行后,我点击最大化按钮和还原按钮,窗口的尺寸已经发生变化了,可以<em>OnSize</em>函数里面的断点却没有任何中断反应。<em>请教</em><em>OnSize</em>函数工作原理?
CDlalog onsize
一个类可以控制CDialog,onsize时所有子对话框根据比例变化,使用简单方便,来源于网络分享下。
OnSize(),OnPaint()
开发中遇到<em>问题</em>,对话框标题栏按钮动态显示和隐藏,应该在这两个函数中 哪一个添加代码呢?
请教关于在OnSize函数中调用SetWindowPos出现错误
我的项目基于MFG对话框,希望在改变对话框大小的同时改变控件的位置,根据网上的资料,选择在<em>OnSize</em>函数中使用SetWindowPos函数。代码如下:rnvoid CAV1Dlg::<em>OnSize</em>(UINT nType, int cx, int cy)rnrn CDialog::<em>OnSize</em>(nType, cx, cy);rnrn // TODO: 在此处添加消息处理程序代码rn CRect rect;rn CWnd *pWnd;rn pWnd =GetDlgItem( IDC_BROWSE_BUTTON );rn pWnd->SetWindowPos( NULL, cx/2-40, cy-25,0, 0, SWP_NOZORDER | SWP_NOSIZE);rnrn运行最后一句后,弹出:rnrn AV1.exe 中的 0x786a591c (mfc90d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突rnrn这个故障提示。而且查看cx,cy的值,都从其正确的值变成了0,0。rn 将最后一句换成:pWnd->SetWindowPos( NULL, cx/2-40, cy-25,60, 20, SWP_NOZORDER )后,还是跟上面一样的异常现象提示,此时cx,cy的值,都从其正确的值变成了60,20。rn 请问是哪里有<em>问题</em>,该如何解决,是不是在不能在<em>OnSize</em>函数中调用SetWindowPos函数?
onsize函数
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226rnSTYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | rn WS_CAPTION | WS_SYSMENU | WS_THICKFRAMErnEXSTYLE WS_EX_OVERLAPPEDWINDOWrnCAPTION "Hello World"rnFONT 8, "MS Shell Dlg", 400, 0, 0x1rnBEGINrn DEFPUSHBUTTON "OK",IDOK,329,204,50,14rn LTEXT "Ser:",IDC_NAME,7,18,347,24rn LTEXT "Des:",IDC_SERVICE_DESCRIPTION,7,42,39,17rn LTEXT "Static",IDC_SORT,7,59,372,145,WS_BORDER,rn WS_EX_CLIENTEDGErnENDrnrn上面是对话框,我想知道怎么写onsize函数比较好,本来想用ONSIZE的长和宽与以前的比,然后设定位置,后来发现movewindow的参数都是int,所以不行rn清问应该怎么写好?
OnSize调整控件大小问题
<em>OnSize</em>中,如果用GetDlgItem(IDC_EDIT1)->SetWindiwPos(...);程序运行不起来,但给IDC_EDIT1赋予内存变量了就可以,能否不赋内存变量调整控件大小?
请教OnSize()中调用MoveWindow()出错、??
rn响应对话框的WM_SIZE消息,来动态改变对话框上控件的位置何大小。rnrn代码如下:rnvoid CMy111Dlg::<em>OnSize</em>(UINT nType, int cx, int cy) rnrn CDialog::<em>OnSize</em>(nType, cx, cy);rn rn // TODO: Add your message handler code herern switch (nType)rn rn case SIZE_MAXIMIZED:rn m_tree.MoveWindow(0,0,cx*3.0/8,cy);rn m_list.MoveWindow(cx*3.0/8,0,cx*5.0/8,cy*5.0/8);rn m_edit.MoveWindow(cx*3.0/8,cy*5.0/8,cx*5.0/8,cy*3.0/8);rn break;rn /* case SIZE_RESTORED:rn * m_tree.MoveWindow(0,0,cx*3.0/8,cy);rn * break;rn */rn default:rn break;rn rnrn其中/***/注释掉程序可以正常运行,就是只能响应窗口最大化的消息,可是怎么响应rn窗口的大小任意改变呢??rnrn如果把/***/部分注释掉,run出错为:rnrnvoid CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)rnrn ASSERT(::IsWindow(m_hWnd));//////ASSERT出错??????????rnrn if (m_pCtrlSite == NULL)rn ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);rn elsern m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint);rnrnrnrn请高手指教,聆听ing!rn
窗口重绘,调用OnSize问题!!!
本人写了一个SDI的程序,是基于formview的。在form上面有很多的控件,比如说Button, Edit, List等。当我点击最大化按钮的时候,form上面的控件都靠近做上方了。rn 有人告诉我说,我需要为视图类添加<em>OnSize</em>()函数,并调用SetWindowPos()函数。本人比较菜,不清楚如何实现???rn 希望各位高手,能告诉我,如何实现在窗口发生变化的时候,里面的控件也能响应的变化!!!rn 最好能写出带嘛!!!
MFC中CView和CFrameWnd问题
CView和<em>CFrameWnd</em>产生的对象都是窗口,并且是同一个窗口类的。CView覆盖在<em>CFrameWnd</em>之上。rn比如说我在CView(客户区)上移动鼠标的消息,怎么<em>CFrameWnd</em>也接收到了?rn而<em>CFrameWnd</em>上比如在非客户区移动鼠标的消息,CView接收不到。
请教从静态的DLL里继承CFrameWnd问题
<em>请教</em>从静态的DLL里继承<em>CFrameWnd</em>的<em>问题</em>rnrn<<<<<<<>>>>>>>rn<<<<<<>>>>>>>rnclass AFX_EXT_CLASS Frm:public <em>CFrameWnd</em>rnrnpublic:rn __declspec(dllexport) Frm();rn __declspec(dllexport) ~Frm();rn DECLARE_MESSAGE_MAP()rn;rnrn<<<<<<>>>>>>rnFrm::Frm()rnFrm::~Frm()rnBEGIN_MESSGE_MAP(Frm,<em>CFrameWnd</em>)rnEND_MESSAGE_MAP()rnrn<<<<<<<<<>>>>>rnrn#pragma oncern#pragma comment(lib,"dll.lib")rn#include "Frm.h"rnclass CMainFrame:public Frmrnrn protected: rn CMainFrame();rn DECLARE_DYNCREATE(CMainFrame)rn DECLARE_MESSAGE_MAP()rn ............rnrnrn报错如下:rnerror LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const * __stdcall Frm::GetThisMessageMap(void)" (?GetThisMessageMap@Frm@@KGPBUAFX_MSGMAP@@XZ)rnrn为什么取消Frm里的DECLARE_MESSAGE_MAP()定义没有报错呢?rnrn谢谢:)rn
关于分割视图,重载CFrameWnd::OnCreateClient函数
我建立两个view类,Aview和Bview来分割框架。(本来工程自带一个view)rn重载了<em>CFrameWnd</em>::OnCreateClient函数。rn<em>问题</em>是在<em>CFrameWnd</em>::OnCreateClient函数中 注释掉了//<em>CFrameWnd</em>::OnCreateClient(lpcs, pContext);后,打印和打印预览就灰掉了,这个打印功能怎么实现啦? 我想打印的数据不在Aview和Bview中。
关于CFrameWnd中获得CView的指针
关于<em>CFrameWnd</em>中获得CView的指针rnrn<em>CFrameWnd</em>* pFrame;rn可以确定pFrame有且仅有1个View.rn当由于有多个Frame,所以初始情况下pFrame不存在ActiveView.rnpFrame->GetActiveView()==NULLrn当点击对应的View后可以获得正确的ActiveView.rnpFrame->GetActiveView()!=NULLrn初始情况,在pFrame中如何获得所有View?rn
关于OnSize函数 急! 急! 急!
我在单文档里 用CSplitterWnd分隔了4个视图 view1 和 view3继承CFormView view2和view4继承CListView, 在view1中有个CTreeCtrl控件 m_TreeCtl, 当单文档改变大小时, 我让m_tree也改变大小, 我在<em>OnSize</em>() 中的 代码如下rnrn CFormView::<em>OnSize</em>(nType, cx, cy);rn // TODO: Add your message handler code herern if(m_TreeCtl->GetSafeHwnd()) rn CRect rc;rn GetClientRect(&rc);rn //m_TreeCtl->MoveWindow(0, 0, cx, cy);rn m_TreeCtl->MoveWindow(&rc, TRUE);rn rnrn但是运行会出错 程序跳到winocc.cpp中!!!!!! 但是出错的不是网上说的 return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),x, y, cx, cy, nFlags);这一句,rn而是 [color=#0000FF]return m_pCtrlSite->SetWindowPos(pWndInsertAfter, x, y, cx, cy, nFlags);[/color] 这句出错, 用了网上说的好多办法 都不能解决, 哪位大侠能给点思路吗?????rnrn ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));rnrn if (m_pCtrlSite == NULL)rn return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),rn x, y, cx, cy, nFlags);rn elsern return m_pCtrlSite->SetWindowPos(pWndInsertAfter, x, y, cx, cy, nFlags);
关于MFC对话框应用程序中,ONSIZE一问
刚才在大家的指导下,我在MESSAGE里,找到WM_PAINT,然后EDIT CODE,在ONPAINT里面加了自己的redraw()函数,解决了在bitmap上重绘的<em>问题</em>,但当我想用同样的方法找ONSIZE,发现与预想的不同rn下面是我用EDIT CODE在主程序里定位到的,请问到底如何对每个对象onsize?rnrnCTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)rn : CDialog(CTestDlg::IDD, pParent)rnrn //AFX_DATA_INIT(CTestDlg)rn m_strRXData = _T("");rn m_strTXData = _T("");rn m_show = _T("");rn m_rightdata = _T("");rn //AFX_DATA_INITrn // Note that LoadIcon does not require a subsequent DestroyIcon in Win32rn m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);rnrnPS.程序有6,7个编辑框,按钮,图片等
MFC关于OnSize和MoveWindow关系的梳理
请问MFC中既然写了<em>OnSize</em>,为什么还要写 MoveWindow 呢,两者的关系是怎样的,具体的案例写法怎么做?
关于MFC中CFrameWnd,CWnd的一点疑问。。
描述rn我借助没有文档视图结构的MFC来实现简单的窗口程序HELLO WORLD。rn思路:从MFC的窗口类中派生出一个我自己的类CMainWindow,然后调用MFC系统类提供的创建窗口的函数创建窗口,然后添加消息映射机制,实现消息处理。rn在选择从哪个MFC的窗口类派生自己的窗口类时思路不是很清晰,所以2个都进行了测试。请大家耐心点看吧。rn情况一:rn.hrnrn代码:rnclass CMyApp : public CWinApprnrnpublic:rn virtual BOOL InitInstance ();rn;rnrnclass CMainWindow : public [color=#FF0000]<em>CFrameWnd</em>[/color]//直接从<em>CFrameWnd</em>类派生rnpublic:rn CMainWindow ();rnrnprotected:rn afx_msg void OnPaint ();rn DECLARE_MESSAGE_MAP ()rn;rnHello.cpprnrn代码:rnBEGIN_MESSAGE_MAP (CMainWindow, <em>CFrameWnd</em>)rn ON_WM_PAINT ()rnEND_MESSAGE_MAP ()rnrnCMainWindow::CMainWindow ():m_ptCaretPos(0,0)rnrn Create (NULL, _T ("The Hello Application"));//创建窗口,指定窗口类名为NULLrnrn情况二:rn.hrnrn代码:rnclass CMainWindow : public [color=#FF0000]CWnd[/color]//从CWnd派生,请考虑如何创建窗口?rn.cpprnrn代码:rnCMainWindow::CMainWindow ()rnrn。。。。。rnCreateEx (0, [color=#FF0000]NULL[/color], _T ("Hello World"),rn WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,rn CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,rn NULL, NULL);//请注意第二个参数(NULL)rn情况一没任何<em>问题</em>,情况二运行出错,查了MSDN说rnCWnd::CreateEx的第二个参数不能为NULL.rn跟踪结果分析:rn情况一之所以能够成功,在于Create函数的第一个参数为NULL,表示使用系统帮忙注册的窗口类去创建窗口,系统是啥时候帮我们注册的窗口类,是这样的,Create会调用基类CWnd::CreateEx,它又继续调用PreCreateWindow函数(注意虚函数),就是在这里进行的注册窗口类AfxDeferRegisterClass。注册的窗口类叫啥名字呢?经过调试是叫“AfxFrameOrView42d”的窗口类名。继续跟踪MFC发现此时执行的是下面的代码:rnrn代码:rn if (fToRegister & AFX_WNDFRAMEORVIEW_REG)rn rn // SDI Frame or MDI Child windows or views - normal colorsrn wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;rn wndcls.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);rn if (_AfxRegisterWithIcon(&wndcls, _afxWndFrameOrView, AFX_IDI_STD_FRAME))rn fRegisteredClasses |= AFX_WNDFRAMEORVIEW_REG;rn rn不晓得AFX_WNDFRAMEORVIEW_REG是啥意思,这段代码的含义其实不是很懂。请懂的童鞋帮忙解释一下,感激涕零。。rn情况二:rn执行顺序CWnd::CreateEx----CWnd::PreCreateWindow--------这里有必要贴下代码rnrn代码:rn// for child windowsrnBOOL CWnd::PreCreateWindow(CREATESTRUCT& cs)rnrn if (cs.lpszClass == NULL)rn rn // make sure the default window class is registeredrn VERIFY(AfxDeferRegisterClass(AFX_WND_REG));rnrn // no WNDCLASS provided - use child window defaultrn ASSERT(cs.style & WS_CHILD);rn cs.lpszClass = _afxWnd;rn rn return TRUE;rnrn继续执行到达 AfxEndDeferRegisterClass,也就是进入了注册窗口类的函数当中,发现执行的是下面的代码:rnrn代码:rn // work to register classes as specified by fToRegister, populate fRegisteredClasses as we gorn if (fToRegister & AFX_WND_REG)rn rn // Child windows - no brush, no icon, safest default class stylesrn wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;rn wndcls.lpszClassName = _afxWnd;rn if (AfxRegisterClass(&wndcls))rn fRegisteredClasses |= AFX_WND_REG;rn rn情况一出现的是[color=#FF0000]AFX_WNDFRAMEORVIEW_REG[/color],情况二则是[color=#FF0000]AFX_WND_REG[/color].请问大家这两个是啥东西呢。网上也没找到相对应的说明。rnOK,继续执行这个函数到if (AfxRegisterClass(&wndcls)),rn然后跳转到:rnrn代码:rn// for child windowsrnBOOL CWnd::PreCreateWindow(CREATESTRUCT& cs)rnrn if (cs.lpszClass == NULL)rn rn // make sure the default window class is registeredrn VERIFY(AfxDeferRegisterClass(AFX_WND_REG));rnrn // no WNDCLASS provided - use child window defaultrn ASSERT(cs.style & WS_CHILD);rn cs.lpszClass = _afxWnd;rn rn return TRUE;rnrn到这里ASSERT(cs.style & WS_CHILD);此断言错误导致崩溃不能继续。断言需要WS_CHILD,但是没有出现,所以失败,然后进入断言失败的函数中。。。。。。rn到了这里,我再次把WS_CHILD添加到了窗口风格中进行测试:rnrn代码:rn CreateEx (0, NULL, _T ("Tic-Tac-Toe"),rn WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX|[color=#FF0000]WS_CHILD[/color],rn CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,rn NULL, NULL);rn然后ASSERT(cs.style & WS_CHILD);这里没<em>问题</em>了,继续跟踪到这里再次崩溃rnrn代码:rnDWORD CWnd::GetExStyle() constrnrn ASSERT(::IsWindow(m_hWnd));//这里的断言导致崩溃rnrn if (m_pCtrlSite == NULL)rn return (DWORD)GetWindowLong(m_hWnd, GWL_EXSTYLE);rn elsern return m_pCtrlSite->GetExStyle();rnrn所以我认为是创建窗口失败,因为必定是hWnd=::CreateWindowEx(API)创建的,然后m_hWnd=hWnd;进行赋值的吧。rn疑问一:到底是哪里出错了呢?为什么hWnd为空呢?为啥传递NULL就运行出错不能创建窗口呢?系统不是默认也帮我们注册了叫 AFX_WND_REG的窗口类吗?(我不确实我的叫法是否对)rn疑问二:大家告诉我m_hWnd=hWnd;到底是在什么时候赋值的呢?我该如何去跟踪呢?我的想法是在Detach的时候,但是在那里打了断点,压根就没到达啊,请问这里是啥情况?rnrn谢谢大家,对MFC的流程非常感兴趣,也跟踪了好久,遇到比较简单的<em>问题</em>也都解决了很多,但是唯独到了这里就进行不下去了,请大家帮忙。非常感谢!
CFrameWnd里的m_listControlBars
<em>CFrameWnd</em>里的m_listControlBars,是在什么时候初始化的,它里面存的应该就是4个CControlBar类型的指针,就是四个CDockBar,有两个<em>问题</em>rn1、m_listControlBars,是在什么时候初始化的rn2、CDockBar负责绘制的区域是整个工具栏停靠边上时,CDockBar要适应整个窗口是吗并绘制区域 ,让CToolBar可以往上去放rn
MFC之CFrameWnd类的探索
<em>CFrameWnd</em>::Create(.....) BOOL <em>CFrameWnd</em>::Create(LPCTSTR lpszClassName,    // 应用程序类名 LPCTSTR lpszWindowName,   // 应用程序窗口名 DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, LPCTSTR lps
如何去掉CFrameWnd的边框?
从<em>CFrameWnd</em>继承下来的窗口,显示出来都会有一个边框,要怎么去掉,不要有下凹的效果?
CTreeCtrl放在CFrameWnd中。
我用向导生成了一个单文档,没有用视图类。我在CMainFrame中声明CTreeCtrl m_wndTree;rn在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中建立一个CTreeCtrl。但是不成功。该怎么做呢?还有怎么样去响应它的点击支点的消息。rn
WPF UserControl OnSize
WPF中,UserControl中有一个ListView控件,在另一个Application程序中,引入这个UserControl,rnrn但引入后不能拖动,如果小了,会被截掉。我想实现的效果,拖动这个Window,能使里面的ListView控件。<em>OnSize</em>!随着Window按比例增长。rn另外实现切分效果,当我拉动Window的左边框或右边框,ListView自动调整宽度;当我拉动Window的上边框和下边框,listView自动调整高度!rnrn高手,专业术语不知道怎么讲!大概就是这功能。。万分感谢!
oncreate 和onsize的调用顺序
oncreate 和onsize的调用顺序是怎么的呢?我看书觉得应该是先调用oncreate ,可是在程序中分别设置断点,却发现是先加载了onsize,这是怎么回事?
onsize是什么消息
哪位大哥能说以下onsize是什么消息,在什么情况下用,他的功能是什么,或者说什么情况下触发它?
OnSize函数失效了?
CListView类中响应WM_SIZE消息的函数<em>OnSize</em>为什么失效了?rn 情况是这样的:rnrn 在MDI中使用工程自动生成的菜单"新建",在新生成的视图中动态生成的CListCtrl会随着文档的大小而改变。rn 但是,如果我自己做一个菜单来实现新建功能,新生成的视图中动态生成的CListCtrl就不会随着文档的大小而改变。为什么?rn 代码如下:rnvoid COoView::Onpp() rnrn // TODO: Add your command handler code herern CMainFrame *pFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;rn COoView* pView;rn CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame(); rn rn pFrame->SendMessage(WM_COMMAND, ID_FILE_NEW, 0);rn pView = (COoView *)pChild->GetActiveView();rnrn COoApp *pWinApp=(COoApp *)AfxGetApp();rn POSITION posTemp,posDoc,posView;rn posTemp = pWinApp->GetFirstDocTemplatePosition();//第1个模板位置rn CDocTemplate *pDocTemplate=pWinApp->GetNextDocTemplate(posTemp);//第1个模板rn posDoc=pDocTemplate->GetFirstDocPosition();//第1个模板中第1个文档位置rn CDocument *pDocument;rn dorn rn pDocument=pDocTemplate->GetNextDoc(posDoc);//第1个模板中第posDoc个文档rn posView=pDocument->GetFirstViewPosition();rn pView=(COoView *)pDocument->GetNextView(posView);rn rn while(posDoc!=NULL);rn ....rnrnrnvoid COoView::<em>OnSize</em>(UINT nType, int cx, int cy) //使列表框随着滚动条的变化而变化rnrn CListView::<em>OnSize</em>(nType, cx, cy);rn rn // TODO: Add your message handler code herern CRect rect;rn GetClientRect(&rect);rn cx=rect.right;rn cy=rect.bottom;rn rn if (m_pList->GetSafeHwnd())rn m_pList->MoveWindow(0, 0, rect.right, rect.bottom);rnrn int w = cx - 2;rn int colwidths[6] = 30, 44, 42, 49, 48, 43 ; // sixty-fourthsrnrn int total_cx = 0;rn int n = m_pList->GetColumns();rnrn // adjust columnsrn for (int i = 0; i < n; i++)rn rn int colwidth = (i == (n - 1)) ? w - total_cx - 2 : (w * colwidths[i]) / 64;rn total_cx += colwidth;rn m_pList->SetColumnWidth(i, colwidth);rn rn rn
SOS 高分求救:关于对话框 OnSize函数调整动态控件问题
我动态创建了几个CStatic控件,对话框,CSTATIC控件,对话框背景为白色,对话框在还原状态的时候,在控件上绘制图象很正常,然后最大化,显示和还原状态一样。先在遇到了一个<em>问题</em>,当初始化窗口为最大化的时候,在CStatic控件上绘制图象,现在出了一个<em>问题</em>,图象绘制完毕后,在这几个绘制的控件的上部分图象被填充色为白色,无边框的方形覆盖。 rn想不明白为什么初始化窗口最大化后部分图象绘制被那个方形覆盖,而在对话框窗口为还原状态时,在控件绘制好后再最大化就没<em>问题</em>?我并没有在初始化的时候做相关的绘图操作。rnrn听说是在<em>OnSize</em>里面响应窗口变化后,对控件位置进行处理等一些操作,具体该怎么做?我创建的可是动态CSTATIC控件,在对话框初始化完毕并不进行相应的创建工作,而是在响应Onbutton事件后才进行控件的创建,并且控件创建的个数并不是固定的.
动态生成的CFrameWnd销毁出错。
代码如下:rnCTestFrame *pFrame = ( CTestFrame * )CTestFrame::CreateObject();//CTestFrame从<em>CFrameWnd</em>派生rnrn CCreateContext contextT;rn contextT.m_pLastView = NULL;rn contextT.m_pCurrentFrame = NULL;rn contextT.m_pNewDocTemplate = NULL;rn contextT.m_pCurrentDoc = NULL;rn contextT.m_pNewViewClass = RUNTIME_CLASS( CTestView );rn rnrn DWORD dwStyle = WS_CHILD|WS_OVERLAPPEDWINDOW|MFS_SYNCACTIVE;rn rn if ( !((<em>CFrameWnd</em> *)pFrame)->Create( NULL, NULL, dwStyle, CRect(0, 0, 0, 0),rn pTabCtrl, 0, 0L, &contextT ) )rn rn return -1; rn rn pFrame->InitialUpdateFrame(NULL, FALSE);rn pFrame->ShowWindow(SW_SHOW);rn//在pTabCtrl中生成框架rn在pTabCtrl销毁的时候销毁框架时候出错 。rn错误提示:rntest.exe 中的 0x7c22700a (mfc71d.dll) 处未处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突 。rnrn中断指向文件objcore.cpp中如下行rnrnBOOL CObject::IsKindOf(const CRuntimeClass* pClass) constrnrn ASSERT(this != NULL);rn // it better be in valid memory, at least for CObject sizern ASSERT(AfxIsValidAddress(this, sizeof(CObject)));rnrn // simple SI casern-> CRuntimeClass* pClassThis = GetRuntimeClass();rn return pClassThis->IsDerivedFrom(pClass);rnrnrn如果contextT.m_pNewViewClass = RUNTIME_CLASS( CTestView );rn改成contextT.m_pNewViewClass = NULL;则不会出错。rn谢谢。rnrnrn
显示另一个 CFrameWnd 窗口
如何在一个窗口中按一button, 则当前窗口削失,出现另一窗口?我在做时可使当前窗口削失,但另一窗口却不能出现,因为"load toolbar failed"
如何重载CFrameWnd::GetMessageString()
哪位高手能给个例子???rn谢了!!!!!
高分请求详细讲解,有意者请进>>(关于CFrameWnd布局问题)
我做了一个软件,现在是标准的Doc/View架构,用了左边的TreeView视和主窗口的ListView视。这是软件的主界面,也是管理界面。rnrn现在我想再做一个“迷你”界面,即切换到此界面时,窗口缩小到预设的大小,而其中的TreeView嵌入CComboBoxEx中,原有的两个ListView只保留一个,也就是说——CMainFrame全部改变了——大小好说一些,但内容改变似乎无从下手。Doc结构不变,完全不变。rnrn我想<em>请教</em>各位高人,如何设计结构,或者如何操作,能够实现我的目的要求?有空的就详细说说实现细节,没时间的简单告诉我一个方法的框架也可以。rnrn我先说说我的想法:rn1.也许能够重新改变原来的CMainFrame,安排View;但如何改写呢?rn2.需要重新继承<em>CFrameWnd</em>产生新的,那么在程序中,如何呼叫产生呢?也就是涉及到MFC产生framewnd和view的机理方面,哪位能讲讲,不胜感激。另外,如果产生了新的,那么又如何让其仍然搭配到主frame的Doc上呢?rnrn疑问甚多,望高人耐心解释。我不吝惜分数,虚心<em>请教</em>。
有关于MFC中OnSize函数用到控件变量的问题
我用MFC编辑了一个界面,其中在一个静态控件的CRect上显示一个子对话框,现在有个<em>问题</em>,我设置可以改变对话框大小,在改变对话框大小的时候,同时改变控件的大小并改变子对话框的大小,现在有个<em>问题</em>,就是改变子对话框大小时在<em>OnSize</em>函数是要提取静态控件的CRect时弹出一个Debug错误,中断后在静态控件的变量m_show.GetWindowRect()这句出现,ASSERT这个GetWindowRect,我想问问这个地方应该怎么处理。
怎样处理OnSize
在FormView::<em>OnSize</em>中调整了一些窗口内控件的位置,但是闪的很厉害,怎样处理才能不闪呢?
classwizard 没有onsize事件
现在想通过ClassWizard给CMainFrame类添加一个<em>OnSize</em>事件,但是打开ClassWizard发现CMainFrame类里根本就没有<em>OnSize</em>事件,怎么办?除了手工添加外有别的办法吗?怎么添加ClassWizard中没有的事件呢?
CFrameWnd::OnIdleUpdateCmdUI()是什么意思?
MFC中的<em>CFrameWnd</em>中一个成员函数,OnIdleUpdateCmdUI(),但是msdn中没有解释,它到底是什么意思?
救命啊!CFrameWnd
是不是不会响应消息?以下提示出错:rnclass CHelloWindow : public <em>CFrameWnd</em>rnrnrn afx_msg void OnClick();rnpublic:rn CHelloWindow();rn;rnrnBEGIN_MESSAGE_MAP(CHelloWindow, <em>CFrameWnd</em>)rnrnON_WM_CLOSE()rnrnEND_MESSAGE_MAP()
MFC Onsize()函数的作用
翻阅无数博客,有少数博友通过打出每次获得的  cx,cy  发现其中,竟有0,0值。 而后,一位博友提出:       在<em>OnSize</em>()中,调用重绘函数,       再在OnPaint()中,进行窗口大小的调整 或 重定位。而未说明理由。 我经过尝试,再在OnPaint()中取出cx,cy值时,发现没有0,0的情况, 因此假想认为:         <em>OnSize</em>()在窗口从创建
71.[开源][安卓][手机当摄像头]AndroidUsbCamera-master下载
71.[开源][安卓][手机当摄像头]AndroidUsbCamera-master 相关下载链接:[url=//download.csdn.net/download/cleopard/8454839?utm_source=bbsseo]//download.csdn.net/download/cleopard/8454839?utm_source=bbsseo[/url]
高教中文3d max基础 ppt下载
3d max基础 教程 推荐....................。。。。。。。。。 相关下载链接:[url=//download.csdn.net/download/meihua1000/2369796?utm_source=bbsseo]//download.csdn.net/download/meihua1000/2369796?utm_source=bbsseo[/url]
Android开发 系统信息 6 网络数据开关 给应用定制皮肤下载
Android开发之系统信息【6】——android网络数据开关 Android 给应用定制皮肤Android开发之系统信息【6】——android网络数据开关 Android 给应用定制皮肤Android开发之系统信息【6】——android网络数据开关 Android 给应用定制皮肤 相关下载链接:[url=//download.csdn.net/download/a8963216310/3438120?utm_source=bbsseo]//download.csdn.net/download/a8963216310/3438120?utm_source=bbsseo[/url]
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview
我们是很有底线的