ZKX's LAB

mfc 获取窗口尺寸定义

2020-07-17知识4

用MFC编写一些简单的窗口需要做哪些准备? 推荐使用mfc的对话框工程使用向导不写一行代码就可以得到一个对话框程序,然后在此基础上增加你需要的控件MFC中如何在窗口类定义的前面新建类? 在主窗口的头文件中,有窗口类和其函数。在窗口类定义的前面新建类就是在窗口类函数前面自己建一个类。mfc中如何自定义窗口的样式 mfc框架类里面有PreCreateWindow这个函数,CREATESTRUCT结构为改变窗口样式的,查查CREATESTRUCT的定义。BOOL XXFrame:PreCreateWindow(CREATESTRUCT&cs){if!CFrameWndEx:PreCreateWindow(cs))return FALSE;TODO:在此处通过修改CREATESTRUCT cs 来修改窗口类或样式return TRUE;}vc 收藏 MFC怎样在子窗口获取父类变量? 你想访问父类中定义了一个变量com变量,那么只要获取父类对象即可。GetParent函数是获取该窗口的父窗口对象的窗口类指针,而不是获取父类对象窗口指针。不要把类的父子vc++编程:在MFC单文档编程中如何获取view类窗口的大小 在MFC中,View视图类窗口的大小有两个,一个是可视窗口大小,一个是逻辑窗口大小。在没有滚动条的情况下,两个大小相同,使用GetClientRect就可以获取大小:CRect rt;GetClientRect(&rt);需要注意的是,CScrollView这个视图类,在有滚动条的情况下,通过上述代码获取的是可视窗口大小,而不是完整窗口尺寸,完整窗口尺寸需要通过GetTotalSize函数获取:CSize logicSize=GetTotalSize();logical sizeMFC中怎么样自定义窗口的样式 比如像这样的 VC仅通过自定义样式是达不到这个效果的。很多比较新的界面风格都没有默认支持。毕竟MFC已经十几年没有变化了。网上找VC程序界面库吧,如:SkinMagicMFC 使窗口不能改变大小,而且只能最大化显示。 你的是基于对话框的应用程序么?可以这样修改:1、右击对话框类,重载虚函数 PreTranslateMessage,完成以下代码,过滤标题栏的双击消息即可。BOOL CMFCTestDlg:PreTranslateMessage(MSG*pMsg){TODO:Add your specialized code here and/or call the base classif(pMsg->message=WM_NCLBUTTONDBLCLK){return TRUE;}return CDialog:PreTranslateMessage(pMsg);}2、要使程序启动时就最大化,可以在对话框的 OnInitDialog 函数后面加入以下代码:ShowWindow(SW_SHOWMAXIMIZED);3、Windows的应用程序是有消息队列的,如果有第二个消息 Post 过来了,会进行排队,总之,消息是单个线程循环进行处理的。如果你写过第一个最原始的 WinMain 程序,会看到如下熟悉的代码:MSG msg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}这个 GetMessage 就是从应用程序消息队列中取出消息往下执行。在MFC怎么中设置窗口大小和位置? 使用SetWindowPos函数CWnd:SetWindowPosBOOL SetWindowPos(const CWnd*pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags)。返回值如果函数成功,则返回非零值;否则返回0。注意:这个窗口不是活动窗口。应用程序不能激活一个非活动窗口但同时又不把它带到Z轴次序的顶部。应用程序可以没有任何限制地改变活动窗口的Z轴次序。非顶层窗口可能拥有一个顶层窗口,但是反之则不成立。任何被顶层窗口拥有的窗口(例如对话框)都将自己变为顶层窗口,以确保所有被拥有的窗口位于它们的拥有者上方。在Windows 3.1或更新的版本中,可以将窗口移动到Z轴次序的顶部,并通过设置它们的WS_EX_TOPMOST风格而将之锁定在那里。使用MoveWindow函数void CWnd:MoveWindow(int x,int y,int nWidth,int nHeight,BOOL bRepaint=TRUE);void CWnd:MoveWindow(LPCRECT lpRect,BOOL bRepaint=TRUE);参数:x指定了CWnd的左边的新位置。y指定了CWnd的顶部的新位置。nWidth指定了CWnd的新宽度。nHeight指定了CWnd的新高度。bRepaint指定了是否要重画CWnd。如果为TRUE,则CWnd象通常那样在OnPaint消息处理函数中接收到一条WM_PAINT消息。如果这个参数为FALSE,则不会发生任何类型的重画操作MFC应用实例:[6]动态设置窗口的大小和位置,选择大小,窗口变为原来大小的一般。选择位置窗口将会移动到屏幕的左上角。MFC中有很多是定义窗口类型的,究竟哪一个才有用? 究竟哪一个才有用?没有哪个是没用的,窗口有太多种类,不同类型和不同属性对应不同的窗口,比如对话框、框架、视图这些都是窗口类的扩展应用。因此,看的不是哪个有用,而是看你要创建什么窗口。具体定义和说明,可以看微软提供的MSDN帮助,以下是在线帮助地址:http://msdn.microsoft.com/zh-cn/library/vstudio/czada357.aspx

#mfc

随机阅读

qrcode
访问手机版