質問編集履歴

4

追記ミスを修正

2022/09/05 23:17

投稿

tokotaku
tokotaku

score60

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,6 @@
118
118
  ON_WM_SYSCOMMAND()
119
119
  ON_WM_PAINT()
120
120
  ON_WM_QUERYDRAGICON()
121
- ON_BN_CLICKED(IDOK, &CumdsPowerManagerDlg::OnBnClickedOk)
122
121
  END_MESSAGE_MAP()
123
122
 
124
123
 

3

ソースコードの追加

2022/09/05 23:15

投稿

tokotaku
tokotaku

score60

test CHANGED
File without changes
test CHANGED
@@ -8,3 +8,205 @@
8
8
  <追記>
9
9
  DDXで設定してみたところ次のようなエラーが出ました。
10
10
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-05/aa89f3ba-2e70-4774-9011-564a30c69369.png)
11
+
12
+ ```ここに言語を入力
13
+ // umdsPowerManagerDlg.h : ヘッダー ファイル
14
+ //
15
+
16
+ #pragma once
17
+
18
+
19
+ // CumdsPowerManagerDlg ダイアログ
20
+ class CumdsPowerManagerDlg : public CDialogEx
21
+ {
22
+ // コンストラクション
23
+ public:
24
+ CumdsPowerManagerDlg(CWnd* pParent = nullptr); // 標準コンストラクター
25
+
26
+ // ダイアログ データ
27
+ #ifdef AFX_DESIGN_TIME
28
+ enum { IDD = IDD_UMDSPOWERMANAGER_DIALOG };
29
+ #endif
30
+
31
+ protected:
32
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV サポート
33
+
34
+
35
+ // 実装
36
+ protected:
37
+ HICON m_hIcon;
38
+
39
+ // 生成された、メッセージ割り当て関数
40
+ virtual BOOL OnInitDialog();
41
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
42
+ afx_msg void OnPaint();
43
+ afx_msg HCURSOR OnQueryDragIcon();
44
+ DECLARE_MESSAGE_MAP()
45
+ public:
46
+ int radio1;
47
+ };
48
+ ```
49
+
50
+ ```ここに言語を入力
51
+
52
+ // umdsPowerManagerDlg.cpp : 実装ファイル
53
+ //
54
+
55
+ #include "pch.h"
56
+ #include "framework.h"
57
+ #include "umdsPowerManager.h"
58
+ #include "umdsPowerManagerDlg.h"
59
+ #include "afxdialogex.h"
60
+
61
+ #ifdef _DEBUG
62
+ #define new DEBUG_NEW
63
+ #endif
64
+
65
+
66
+
67
+ // アプリケーションのバージョン情報に使われる CAboutDlg ダイアログ
68
+
69
+ class CAboutDlg : public CDialogEx
70
+ {
71
+ public:
72
+ CAboutDlg();
73
+
74
+ // ダイアログ データ
75
+ #ifdef AFX_DESIGN_TIME
76
+ enum { IDD = IDD_ABOUTBOX };
77
+ #endif
78
+
79
+ protected:
80
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV サポート
81
+
82
+ // 実装
83
+ protected:
84
+ DECLARE_MESSAGE_MAP()
85
+ };
86
+
87
+ CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
88
+ {
89
+ }
90
+
91
+ void CAboutDlg::DoDataExchange(CDataExchange* pDX)
92
+ {
93
+ CDialogEx::DoDataExchange(pDX);
94
+ }
95
+
96
+ BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
97
+ END_MESSAGE_MAP()
98
+
99
+
100
+ // CumdsPowerManagerDlg ダイアログ
101
+
102
+
103
+
104
+ CumdsPowerManagerDlg::CumdsPowerManagerDlg(CWnd* pParent /*=nullptr*/)
105
+ : CDialogEx(IDD_UMDSPOWERMANAGER_DIALOG, pParent)
106
+ , radio1(0)
107
+ {
108
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
109
+ }
110
+
111
+ void CumdsPowerManagerDlg::DoDataExchange(CDataExchange* pDX)
112
+ {
113
+ CDialogEx::DoDataExchange(pDX);
114
+ DDX_Radio(pDX, IDC_RADIO1, radio1);
115
+ }
116
+
117
+ BEGIN_MESSAGE_MAP(CumdsPowerManagerDlg, CDialogEx)
118
+ ON_WM_SYSCOMMAND()
119
+ ON_WM_PAINT()
120
+ ON_WM_QUERYDRAGICON()
121
+ ON_BN_CLICKED(IDOK, &CumdsPowerManagerDlg::OnBnClickedOk)
122
+ END_MESSAGE_MAP()
123
+
124
+
125
+ // CumdsPowerManagerDlg メッセージ ハンドラー
126
+
127
+ BOOL CumdsPowerManagerDlg::OnInitDialog()
128
+ {
129
+ CDialogEx::OnInitDialog();
130
+
131
+ // "バージョン情報..." メニューをシステム メニューに追加します。
132
+
133
+ // IDM_ABOUTBOX は、システム コマンドの範囲内になければなりません。
134
+ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
135
+ ASSERT(IDM_ABOUTBOX < 0xF000);
136
+
137
+ CMenu* pSysMenu = GetSystemMenu(FALSE);
138
+ if (pSysMenu != nullptr)
139
+ {
140
+ BOOL bNameValid;
141
+ CString strAboutMenu;
142
+ bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
143
+ ASSERT(bNameValid);
144
+
145
+ if (!strAboutMenu.IsEmpty())
146
+ {
147
+ pSysMenu->AppendMenu(MF_SEPARATOR);
148
+ pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
149
+ }
150
+ }
151
+
152
+ // このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
153
+ // Framework は、この設定を自動的に行います。
154
+ SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
155
+ SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
156
+
157
+ // TODO: 初期化をここに追加します。
158
+
159
+ return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。
160
+ }
161
+
162
+ void CumdsPowerManagerDlg::OnSysCommand(UINT nID, LPARAM lParam)
163
+ {
164
+ if ((nID & 0xFFF0) == IDM_ABOUTBOX)
165
+ {
166
+ CAboutDlg dlgAbout;
167
+ dlgAbout.DoModal();
168
+ }
169
+ else
170
+ {
171
+ CDialogEx::OnSysCommand(nID, lParam);
172
+ }
173
+ }
174
+
175
+ // ダイアログに最小化ボタンを追加する場合、アイコンを描画するための
176
+ // 下のコードが必要です。ドキュメント/ビュー モデルを使う MFC アプリケーションの場合、
177
+ // これは、Framework によって自動的に設定されます。
178
+
179
+ void CumdsPowerManagerDlg::OnPaint()
180
+ {
181
+ if (IsIconic())
182
+ {
183
+ CPaintDC dc(this); // 描画のデバイス コンテキスト
184
+
185
+ SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
186
+
187
+ // クライアントの四角形領域内の中央
188
+ int cxIcon = GetSystemMetrics(SM_CXICON);
189
+ int cyIcon = GetSystemMetrics(SM_CYICON);
190
+ CRect rect;
191
+ GetClientRect(&rect);
192
+ int x = (rect.Width() - cxIcon + 1) / 2;
193
+ int y = (rect.Height() - cyIcon + 1) / 2;
194
+
195
+ // アイコンの描画
196
+ dc.DrawIcon(x, y, m_hIcon);
197
+ }
198
+ else
199
+ {
200
+ CDialogEx::OnPaint();
201
+ }
202
+ }
203
+
204
+ // ユーザーが最小化したウィンドウをドラッグしているときに表示するカーソルを取得するために、
205
+ // システムがこの関数を呼び出します。
206
+ HCURSOR CumdsPowerManagerDlg::OnQueryDragIcon()
207
+ {
208
+ return static_cast<HCURSOR>(m_hIcon);
209
+ }
210
+ ```
211
+
212
+

2

回答に対する追記

2022/09/05 08:37

投稿

tokotaku
tokotaku

score60

test CHANGED
File without changes
test CHANGED
@@ -4,3 +4,7 @@
4
4
 
5
5
  ラジオボタンはグループボックスで囲んであります。
6
6
  どこから設定するのでしょうか?
7
+
8
+ <追記>
9
+ DDXで設定してみたところ次のようなエラーが出ました。
10
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-05/aa89f3ba-2e70-4774-9011-564a30c69369.png)

1

説明の追加

2022/09/05 07:35

投稿

tokotaku
tokotaku

score60

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,5 @@
1
1
  VC++のMFCを勉強中です。
2
- ラジオボタンの初期値を設定したいのですが、設定方法がわかりません。
2
+ ラジオボタンの初期値(選択状態)を設定したいのですが、設定方法がわかりません。
3
3
  ラジオボタンのプロパティの中に初期値を設定する箇所があるかと思ったのですがありませんでした。
4
4
 
5
5
  ラジオボタンはグループボックスで囲んであります。