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 支持