MFC悬浮控制面板

本文介绍了如何在MFC应用中创建一个悬浮控制面板。首先,通过设置对话框的属性来创建无边框的Child风格窗口。接着,利用类向导创建CSunPane类,并继承MFC的CDockablePane。在CSunPane类中处理WM_CREATE、WM_SIZE和WM_DESTROY消息。然后,在框架类MainFrm中添加对CSunPane的支持。最后,通过Ribbon菜单的Checkbox控件实现控制面板的显示与隐藏功能,从而完成界面效果的展示。
摘要由CSDN通过智能技术生成

1、创建对话框,代码如下

IDD_DLG_SUN DIALOGEX 0, 0, 153, 286
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    EDITTEXT        IDC_SUN_H,61,216,66,14,ES_AUTOHSCROLL
    EDITTEXT        IDC_LOCAL_LAT,58,40,66,14,ES_AUTOHSCROLL
    LTEXT           "当地经度:",IDC_STATIC,15,22,41,8
    LTEXT           "当地纬度:",IDC_STATIC,15,42,41,8
    GROUPBOX        "位置信息",IDC_STATIC,7,7,134,66
    GROUPBOX        "时间信息",IDC_STATIC,7,75,134,121
    CONTROL         "",IDC_LOCAL_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_LONGDATEFORMAT | WS_TABSTOP,14,111,123,15
    GROUPBOX        "计算结果",IDC_STATIC,7,202,134,57
    LTEXT           "太阳高度角:",IDC_STATIC,12,218,49,8
    LTEXT           "太阳方位角:",IDC_STATIC,12,240,49,8
    EDITTEXT        IDC_LOCAL_LNG,58,21,66,14,ES_AUTOHSCROLL
    EDITTEXT        IDC_SUN_P,61,237,66,14,ES_AUTOHSCROLL
    LTEXT           "当地时:",IDC_STATIC,16,92,33,8
    EDITTEXT        IDC_LOCAL_TIMEZONE,55,90,66,14,ES_AUTOHSCROLL | ES_READONLY
    CONTROL         "",IDC_REF_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,13,153,123,15
    LTEXT           "基准时:",IDC_STATIC,15,135,33,8
    LTEXT           "(北纬和东经为正;南纬和西经为负)",IDC_STATIC,12,58,123,8
    LTEXT           "春风日:",IDC_STATIC,16,176,33,8
    COMBOBOX        IDC_CMB_REF_TIMEZONE,54,133,66,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    COMBOBOX        IDC_CMB_SPRING,54,174,66,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "度",IDC_STATIC,126,23,9,8
    LTEXT           "度",IDC_STATIC,126,41,9,8
    LTEXT           "度",IDC_STATIC,129,218,9,8
    LTEXT           "度",IDC_STATIC,129,238,9,8
    PUSHBUTTON      "计算",IDC_BTN_COMPUTE,42,265,50,14
END
外观如下,

设置border为None,style为Child

2、创建响应的变量,响应函数

#pragma once
#include "afxwin.h"
#include "afxdtctl.h"DEG2RAD
#include "ATLComTime.h"
#include "atltime.h"


// CDlgSun 对话框
#define TIME_ZONE	12	//	时区数东12区~西12区
#define SUN_PI		3.14159265358979323846	//	π
#define DEG2RAD		(SUN_PI / 180.0)	//	角度转弧度
#define RAD2DEG		(180 / SUN_PI)//	弧度转角度

class CDlgSun : public CDialog
{
	DECLARE_DYNAMIC(CDlgSun)

public:
	CDlgSun(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~CDlgSun();

// 对话框数据
	enum { IDD = IDD_DLG_SUN };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值