- 浏览: 15626 次
最新评论
VC++日记(非模态,自定义消息,窗体移动……)
2011年07月07日
1:如何做非模态对话框[/b]
1)非模态对话框就是要控制对话框,不让它接管所有的消息循环。而DoModal()函数事实上就是“劫持”了所有的消息循环,只要它没有返回,任何“非该对话框消息”都会被忽略。事实上,如果我们避开使用DoModal(),我们就避免了这一层限制。我们重载对话窗的
[b]BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 函数,在用到该对话窗的时候,像创建任意一个CWnd一样,使用Creat来创建就可以了。当然,如果这样的话,很多数据成员的初始化工作就最好放到这里了。另:注意要调用基类的Creat函数,下面是重载Creat的一个实例:
BOOL myDlg02::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
m_bCapture = FALSE;
CRect rect1;
m_pview->GetWindowRect(rect1);
m_pointToLeft = rect1.TopLeft();
m_sizeOffset = CSize(0,0);
return CDialog::Create(IDD, pParentWnd);
}
2)使用非模态对话框时候,必须注意对话框跟视图类的“对话”。所以,我们往往提供一个Cview指针成员,用来和拥有该对话框的视图“沟通”。下面是一个例子:
class myDlg02 : public CDialog
{
…[/b]
[b]…[/b]
[b]public:
myDlg02(CWnd* pParent = NULL); // standard constructor
myDlg02(CView* pview);
myDlg02(){m_pview=NULL;}
CSize m_sizeOffset;
CPoint m_pointToLeft;
BOOL m_bCapture;
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
protected:
CView* m_pview;[/b]
[b]…[/b]
[b]…[/b]
[b]}
同时呢,m_pview往往也是从对话框所发消息的目的地:
void myDlg02::OnOK()
{
if (m_pview!=NULL)
{
UpdateData(TRUE);
m_pview->PostMessage(WM_NICETOYOU,IDOK);
}
else
CDialog::OnOK();
}
void myDlg02::OnCancel()
{[/b]
[b] if (m_pview!=NULL)
m_pview->PostMessage(WM_GOODBYE,IDCANCEL);[/b]
[b] else[/b]
[b] CDialog::OnCancel();[/b]
[b]}[/b]
[b]上面的代码重载了OnOK和OnCancle函数,相当于控制了OK,Cancle按钮的行为――让该对话框的拥有者来控制它们好了~~
2:如何使用用户消息[/b]
先明白一点:消息是发送出去了,那么由谁来处理呢?――自然是接收消息的“客户”了啊。所以,消息响应函数必须由客户负责。那么,用户自定义消息的消息响应函数的格式是怎样的呢?――
[b]afx_msg void OnmyDlgGBOK(WPARAM wParam,LPARAM lParam);
afx_msg void OnmyDlgGBCancle(WPARAM wParam,LPARAM lParam);
(在视图类的头文件中声明之)[/b]
[b]还要在消息映射表中添加:[/b]
[b] ON_MESSAGE(WM_NICETOYOU,OnmyDlgGBOK)
ON_MESSAGE(WM_GOODBYE,OnmyDlgGBCancle)
(在视图的CPP文件的消息映射表中添加)[/b]
[b]其中WM_NICETOYOU 、WM_GOODBYE是消息识别号。[/b]
[b]这样,只要在必要的时候用视图的指针向视图发送消息,加上上面的链接,我们的消息响应函数就可以调用了。[/b]
[b]另:介绍一下BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 )和 [/b]
[b]LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 )这两个函数。首先,至于他们关于寄送和发送的区别就不谈了,关键要注意他们的参数。第一个参数是消息识别号,第二个和第三个参数是发给消息响应消息的参数,正好与消息响应函数的参数列表对应。WPARAM和LPARAM这两个类型其实际上是Long,也就是说,它们实质上是void指针,可以是任何类型的化身,可以根据实际情况灵活的运用它们。
3:如何动态控制窗体的位置和大小
MoveWindow(CRect(m_pointToLeft,size),TRUE);
那么,如何向在标题栏上一样对整个对话框或者窗体进行动态移动呢?
{
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
CSize m_sizeOffset;
CPoint m_pointToLeft;
BOOL m_bCapture;
}
{
void myDlg02::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
ClientToScreen(&point);
m_sizeOffset = point - m_pointToLeft;
m_bCapture = TRUE;
SetCapture();
CDialog::OnLButtonDown(nFlags, point);
}
void myDlg02::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_bCapture = FALSE;
ReleaseCapture();
CDialog::OnLButtonUp(nFlags, point);
}
void myDlg02::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_bCapture)
{
ClientToScreen(&point);
m_pointToLeft = point - m_sizeOffset;
CRect rect;
GetWindowRect(rect);
CSize size(rect.Width(),rect.Height());
this->MoveWindow(CRect(m_pointToLeft,size),TRUE);
CDialog::OnMouseMove(nFlags, point);
}
}
BOOL myDlg02::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
m_bCapture = FALSE;
CRect rect1;
m_pview->GetWindowRect(rect1);
m_pointToLeft = rect1.TopLeft();
m_sizeOffset = CSize(0,0);
return CDialog::Create(IDD, pParentWnd);
}
}
不知道为什么,在做窗体的移动时候如果使用客户坐标,移动的窗体老是出现跳动和闪烁,而改成屏幕坐标,这个问题就神秘的解决了。[/b]
[b]4:如何控制窗体的初始化大小(最大,最小,默认)[/b]
vc++ 窗口最大化方法
一般的做法是在 C**App::InitInstance()中,修改成这样:
[b]{
//..
…[/b]
[b]m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
return TRUE;..
}
或者,还在 CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中,添加:
{
//...
cs.style |= WS_MAXIMIZE;
//...
}
但是,这种方法的最大化会体现出窗体的有效变大的过程,这个是因为在ShowWindow之前,还有地方显示了窗体,做法是:
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
//在ParseCommandLine之后,ProcessShellCommand之前,添加这句!!!
m_nCmdShow = SW_SHOWMAXIMIZED;
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
5:如何控制控件的层叠次序[b][/b]
Ctrl+d,单击控件,会看到控件上的代号会变化,代号小的更底层。
发表评论
-
高一期中试题
2012-01-20 12:00 758高一期中试题 2012年01月17日 高一年级英语学科( ... -
2012信息技术中考模拟题单选71-140题标准版
2012-01-20 12:00 15132012信息技术中考模拟题单选71-140题标准版 2012 ... -
00000000007
2012-01-20 12:00 75600000000007 2011年10月04日 重要提醒 ... -
巧学宾语从句――宾语从句语法详解 [宾语从句歌诀]
2012-01-20 12:00 1003巧学宾语从句――宾语从句语法详解 [宾语从句歌诀] 2011 ... -
【转】 完型填空复习教案设计
2012-01-20 12:00 733【转】 完型填空复习教案设计 2011年10月01日 完 ... -
消息分流器(HANDLE_MSG)
2012-01-19 16:49 629消息分流器(HANDLE_MSG) 20 ... -
【转】 消息分流器-HANDLE_MSG
2012-01-19 16:49 685【转】 消息分流器-HANDLE_MSG 2011年05月3 ... -
处理 WM_NCHITTEST 消息实现 WPF 无边框窗体改变大小和移动
2012-01-19 16:49 2786处理 WM_NCHITTEST 消息实现 WPF 无边框窗体改 ... -
VC添加自定义消息(转)
2012-01-19 16:49 849VC添加自定义消息(转) 2011年04月14日 VC的 ... -
灯饰英语
2012-01-17 06:33 598灯饰英语 2011年12月02日 ... -
sysytem32下的文件及其作用的文章
2012-01-17 06:33 489sysytem32下的文件及其作用的文章 2011年11月2 ... -
服务器端发送推送数据
2012-01-17 06:33 690服务器端发送推送数据 ... -
Java语言11个主要特性
2012-01-17 06:33 503Java语言11个主要特性 20 ... -
用PHP代码调用sockets,直接用服务器的网络攻击别的IP
2012-01-17 06:33 528用PHP代码调用sockets,直接用服务器的网络攻击别的IP ... -
今天写写小虎队
2012-01-16 05:14 602今天写写小虎队 2009年1 ... -
夜。上海
2012-01-16 05:14 604夜。上海 2009年08月25日 今天突 ... -
超雷人的 山寨版
2012-01-16 05:14 592超雷人的 山寨版 2009年10月27日 原来不仅仅中 ... -
猜猜我是谁语录
2012-01-16 05:14 637猜猜我是谁语录 2010年0 ...
相关推荐
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
考研管理类联考综合能力答案解析,考研真题,考研历年真题,考研管理类联考历年真题,真题解析。
springboot框架 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。 特征: 1. SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。 2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。 3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。 4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
2024-2030全球及中国冷冻有机毛豆行业研究及十五五规划分析报告
SpringBoo车险理赔源码.rarSpringBoo车险理赔源码.rarSpringBoo车险理赔源码.rar
详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;
详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;
1、yolov8房屋墙面路面裂缝-发霉-油漆脱落-渗水-墙皮脱落检测,包含训练好的检测权重,以及PR曲线,loss曲线等等,和数据集 2、pyqt界面可以检测图片、视频、调用摄像头 3、数据集和检测结果参考:https://blog.csdn.net/zhiqingAI/article/details/124230743 4、采用pytrch框架,python代码 https://blog.csdn.net/zhiqingAI/article/details/137371158
射频通信原理-第1章.ppt
本L文主要论述了如何使用JAVA语言开发一个垃圾分类网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述垃圾分类网站的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 垃圾分类网站的主要使用者分为管理员和用户、垃圾分类管理员,实现功能包括管理员:首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃圾类型管理、垃圾图谱管理、系统管理,垃圾分类管理员;首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃圾类型管理、垃圾图谱管理,用户前台;首页、垃圾分类、垃圾图谱、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个垃圾分类网站信息管理的过程得以实现。 本系统的使用可以实现本垃圾分类网站管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。 关键词:垃圾分类网站 JAVA语言;MYSQL数据库;Spring Boot框架
高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明
312749069629470selfieU重绘.apk
芒果实例分割数据集在多个场景中都有重要的应用,以下是几个主要的使用场景: 精准农业与果园管理:在精准农业中,对果园中的芒果进行实例分割可以帮助农民更准确地了解每个芒果的生长情况,包括大小、形状、颜色等。这有助于农民进行针对性的管理,如施肥、灌溉和修剪,从而提高果园的产量和质量。 自动化采摘:芒果实例分割数据集可以用于训练自动化采摘机器人。通过识别图像中的芒果实例,机器人可以精确地定位并采摘芒果,从而提高采摘效率和减少人工成本。 质量评估与分类:在芒果的分级和质量控制中,实例分割技术可以帮助对芒果进行自动分类。通过分析芒果的形状、大小和颜色等特征,可以评估芒果的成熟度、新鲜度和品质等级,从而为消费者提供更高质量的芒果产品。 病虫害检测:芒果实例分割数据集也可用于病虫害的检测和诊断。通过对芒果图像的分割和分析,可以检测病虫害的发生,及时发现并采取相应的防治措施,减少损失并保障芒果的健康生长。 智能监控与安全追溯:在芒果的储存和运输过程中,使用实例分割技术可以实现对芒果的实时监控和追溯。通过识别图像中的芒果实例,可以监测芒果的状态和变化,及时发现异常情况并采取相应措施,确保芒果的安
高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明
实验四-数据库安全.doc
PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。
高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
依次动态调用某一文件夹下的子VI,运行子VI,并将子VI前面板打开插入到主程序的前面板中。
springboot框架 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。 特征: 1. SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。 2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。 3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。 4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了