孙鑫VC++深入详解:Lesson9 Part7---在状态栏中显示鼠标的位置

VC++状态栏操作 如何操作状态栏为在状态栏显示正确的信息,曾为此绞尽脑汁,在网上查找及在相关书籍上看到一些方法,我归纳出两种方法1. 状态栏的创建使用应用向导生成如下: CStatusBar  m_wndStatusBar;;  if (!m_wndStatusBar.Create(this) ||  !m_wndStatusBar.SetIndicators(indicators,    sizeof( 阅读详情

1. 要在View中捕获WM_MOUSEMOVE消息,而不是在FRAME中,因为框架被VIEW类覆盖了.

2. 在CMainFrame中       public: CStatusBar  m_wndStatusBar; // 设置为public,一边view中访问

四种方式:

void CStyleView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
      
	    CString str;  
		str.Format("x=%d,y=%d",point.x,point.y);//格式化str

//------方式一:m_wndStatusBar.SetWindowText(str)
   //((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);

	
//------方式二:用CMainFrame的成员函数 SetMessageText(),它唯一的用途就是在ID为0的状态栏的pane上设置text
	//((CMainFrame*)GetParent())->SetMessageText(str);

	
//------方式三:用CMainFrame的成员函数GetMessageBar()
		//((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str);

//------方式四:用CWnd的成员函数GetDescendantWindow(),查找指定ID的子窗口
		GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR,FALSE)->SetWindowText(str);
	
	CView::OnMouseMove(nFlags, point);
}

GetDescendantWindow() 函数中涉及到一个所谓的永久性窗口和临时窗口的概念,需要搞清楚.

CWnd* GetDescendantWindow( int nID, BOOL bOnlyPerm = FALSE ) const;

Return Value

A pointer to a CWnd object, or NULL if no child window is found.

Parameters

nID

Specifies the identifier of the control or child window to be retrieved.

bOnlyPerm

Specifies whether the window to be returned can be temporary. If TRUE, only a permanent window can be returned; if FALSE, the function can return a temporary window. For more information on temporary windows see Technical Note 3.

Remarks



//---

//---

孙鑫VC++深入详解:Lesson6 Part4 ---CMenu 类的应用:添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu CMenu 类的应用 添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu // //------ 追加菜单,在已菜单后面追加一个子菜单 用函数CMenu::AppendMenu  CMenu::AppendMenu  BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lps 阅读详情

相关推荐

孙鑫VC++深入详解:Lesson6 Part2 -- MFC菜单更新机制 用该机制实现 Enable or Disable MenuItem

MFC菜单命令更新机制---用该机制实现 Enable or Disable  MenuItem 方法: 1)用资源中的菜单项"剪切"的ClassWizard添加一个UPDATE_COMMAND_UI消息响应函数     void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)     同时发现MFC在MainFrm.cpp的消息映射代码处添加了

-----------------------------不要在跟自己无关的事情上浪费时间 5386

孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu

1  -----增加右键弹出菜单方法一:      Project-->Add to Project-->Components and Controls -->Visual C++ Components    -->Pop-up menu 注意要加到View类中,不要加到Frame类中,因为Frmae被View覆盖,收不到鼠标消息. 2  -----增加右键弹出菜单方法二: 模仿一,在鼠

-----------------------------不要在跟自己无关的事情上浪费时间 9976

孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息

滚动字母,修改输出字幕颜色,定时器 在onCreate中添加一个定时器,即SetTimer(1,100,NULL) 再在类CDrawView中添加消息WM_TIMER的响应函数OnTimer 每间隔100毫秒被调用OnTime() 在OnTime()中用DrawText输出字符串,DrawText的输出宽度每次按照5像素宽度增加, 随着矩形宽度增加,那么显示出来的字符串就逐步增加,效

-----------------------------不要在跟自己无关的事情上浪费时间 3782

孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath

5. 路径层 CDC::BeginPath,BeginPath    如何在Device Context中建立了一个路径层:    1)即调用BeginPath()    2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域    3)调用EndPath()  产生闭环的路径层(即一个绘图区域)             pDC->BeginPath();

-----------------------------不要在跟自己无关的事情上浪费时间 4887

孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单

//--   1.    在菜单上加个子菜单TEST,然后在CMainFrame,CMenuApp,CMenuDoc,CMenuView这4个类中都添加响应WM_COMMAND命令消息的OnTest函数      测试表明     (1) 只会有一个OnTest能响应     (2)响应优先级 ,类的顺序是 CMenuView ---> CMenuDoc --->CMainFrame --

-----------------------------不要在跟自己无关的事情上浪费时间 4881

孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?

因为对话框程序中,某些特点的消息,如按键消息被Windows内部的对话框过程处理了,即基类完成了或者被发送给子控件处理,所以在对话框类中就不能捕获到按键消息 解决办法:在子类中覆盖基类的特定消息过滤响应函数. 在MFC中,用虚函数ProcessMessageFilter()来过滤或者响应菜单和对话框的特定Windows消息. 在子类中覆盖它,接管消息响应. 本例中,在CWinSun

-----------------------------不要在跟自己无关的事情上浪费时间 3205

孙鑫VC++深入详解:Lesson8 Part2---属性表单

1. Insert-->Dialog 插入IDD_LARGER....3个   Style:Child, Disable 2 分别给三个属性表单页Page1,Page2,Page3 用ClassWizard创建3个类,CPage1,CPage2,CPage3 3. 属性表单页CPropertyPage实际是要附加在CPropertySheet上才能显示    (1)CPropertyPage

-----------------------------不要在跟自己无关的事情上浪费时间 3169

孙鑫VC++深入详解:Lesson6 Part6--- 电话本示例程序 动态添加子菜单 框架类窗口截获命令消息

// --- //-- 一. 电话本设计思路: a. 在Veiw类中用 OnChar()响应客户区的输入 如 "Weixin 2666777",用空格隔开名称与电话 b. 收到回车键时把每行输入保存到m_strLine,和m_strArray数组中,m_strArray要定义成public,因为MainFrame中要用 c. 用"Weixin"创建动态子菜单. d. 响应菜单COMM

-----------------------------不要在跟自己无关的事情上浪费时间 2950

孙鑫VC++深入详解:Lesson9 Part2---修改窗口光标,图表,背景

一. 窗口创建之前修改,用自定义的窗口类WNDCLASS wc 由于窗口的图标,光标,背景是在窗口类设计是指定的,因此要改的话, 就自己定义一个WNDCLASS wc,按照自己的需要填充wc,并注册RegisterClass(&wc) 1. 在MFC程序中,要修改出现窗口图表只能在框架类进行(CMainFrame) 2. 要修改背景和光标,应该在视类中进行,在框架类修改则看不见

-----------------------------不要在跟自己无关的事情上浪费时间 2554

孙鑫VC++深入详解:Lesson9 Part8---给程序加个启动画面

方法: VC菜单栏: Project--->Add to Project--->Components and Controls   选择VISUAL C++ Components 找到Splash screen 插入该组件后,工程中就增加了CSplashWnd 类,并在CMainFrame类的OnCreate函数中加了一条语句: CSplashWnd::ShowSplashScree

-----------------------------不要在跟自己无关的事情上浪费时间 2544

孙鑫VC++深入详解:Lesson6 Part5--- 给自建的动态子菜单配置COMMAN消息响应函数

在MainFrm.cpp文件中的 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)  中创建好子菜单: CMenu menu; menu.CreatePopupMenu(); //初始化对象menu --- 创建一个空的弹出菜单 GetMenu()->InsertMenu(2,MF_BYPOSITION|MF_POPUP,(U

-----------------------------不要在跟自己无关的事情上浪费时间 2488

孙鑫VC++深入详解:Lesson7 Part4 ---对话框上各个控件之间循环接受回车键获得焦点

最终方案:是在OnOK()中循环改变对话框上的各个ITEM的焦点,而且这个方法不需要去定义EDIT的WndProc void CTestDlg::OnOK() { // TODO: Add extra validation here GetNextDlgTabItem(GetFocus(),false)->SetFocus(); // CDialog::OnOK(); //注释掉基类的On

-----------------------------不要在跟自己无关的事情上浪费时间 2436

孙鑫VC++深入详解:Lesson5 Part1 文本插入符Caret,位图插入符,窗口重绘

Lesson4,Lesson5都是在CXXXXView.cpp中干活,实际运行时那肯定得有个CXXXXView的对象来调用这些消息响应函数啊,这个对象在哪里创建的? // // TextView.cpp : implementation of the CTextView class // #include "stdafx.h" #include "Text.h" #include "Tex

-----------------------------不要在跟自己无关的事情上浪费时间 2349

高校如何提升科研项目评价质量与申报成功率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

【顶级EI复现】【最新EI论文】低温环境下考虑电池寿命的微电网优化调度(Matlab代码实现)

内容概要:本文针对低温环境下微电网运行中电池寿命损耗加剧的问题,提出了一种考虑电池寿命的优化调度模型,并通过Matlab代码实现仿真验证。研究聚焦于低温导致电池性能下降、循环寿命缩短的技术挑战,结合分布式能源出力波动性与负荷需求变化,构建了融合经济性、可靠性与电池健康状态的多目标优化调度框架。通过引入电池老化成本模型,将寿命损耗量化为可调度变量,优化充放电策略以延长电池使用寿命并降低系统综合运行成本。文中详细阐述了目标函数设计、约束条件设定及求解方法,并通过算例分析验证了该策略在抑制深度充放电、均衡电池组使用、提升系统经济性等方面的有效性。; 适合人群:具备电力系统、新能源或优化算法基础知识的研究生、科研人员及从事微电网、储能系统相关工作的工程技术人员。; 使用场景及目标:①应用于高寒地区或冬季低温场景下的微电网能量管理系统设计;②为研究电池寿命与系统经济性之间的权衡关系提供建模思路;③作为Matlab优化工具箱(如Yalmip、CPLEX)在电力系统调度中应用的学习案例; 阅读建议:读者可结合文中提供的Matlab代码,复现仿真结果,深入理解电池老化模型与优化调度的耦合机制,并尝试在此基础上引入更多不确定性因素(如电价波动、负荷预测误差)进行扩展研究。

上一篇: 孙鑫VC++深入详解:Lesson9 Part6---在状态栏中添加进度条
下一篇: 孙鑫VC++深入详解:Lesson9 Part8---给程序加个启动画面
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值