質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2018閲覧

C++ ListControlの扱いについて

NaokiPooh

総合スコア21

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/10/21 00:53

お世話になっております。
C++を学習中の初心者学生です。
現在住所録アプリケーションを作成中です。

ダイヤログベースで、送信ボタンが押されたら登録されている情報をリストに一覧に表示させたいのですが、どう記述すればよろしいのでしょうか。
リストに表示させたい情報
・No
・氏名
・住所

以上、ご教授のほどよろしくお願いいたします。

以下ソース

C++

1//------------------------------------------------------------------------------ 2// 住所録 3//------------------------------------------------------------------------------ 4 5#include "stdafx.h" 6#include "ZyuSyo.h" 7#include "ZyuSyoDlgNew.h" 8#include "afxdialogex.h" 9#include "assert.h" 10 11// ZyuSyoDlgNew ダイアログ 12 13IMPLEMENT_DYNAMIC(ZyuSyoDlgNew, CDialogEx) 14 15//------------------------------------------------------------------------------ 16// コンストラクタ 17//------------------------------------------------------------------------------ 18ZyuSyoDlgNew::ZyuSyoDlgNew(CWnd* pParent /*=NULL*/) 19 : CDialogEx(ZyuSyoDlgNew::IDD, pParent) 20{ 21 m_pQueue = NULL; 22 m_pQueue2 = NULL; 23} 24 25//------------------------------------------------------------------------------ 26// デストラクタ 27//------------------------------------------------------------------------------ 28ZyuSyoDlgNew::~ZyuSyoDlgNew() 29{ 30} 31 32//------------------------------------------------------------------------------ 33// DDV/DDXサポート 34//------------------------------------------------------------------------------ 35void ZyuSyoDlgNew::DoDataExchange(CDataExchange* pDX) 36{ 37 CDialogEx::DoDataExchange(pDX); 38 DDX_Control(pDX, IDC_LIST, m_LC); 39} 40 41BEGIN_MESSAGE_MAP(ZyuSyoDlgNew, CDialogEx) 42 ON_BN_CLICKED(IDC_GO, &ZyuSyoDlgNew::OnBnClickedGo) 43 ON_BN_CLICKED(IDC_CLEAR, &ZyuSyoDlgNew::OnBnClickedClear) 44 ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, &ZyuSyoDlgNew::OnLvnItemchangedList) 45END_MESSAGE_MAP() 46 47//----------------------------------------------------------------------------------------------------------------------------- 48 49//------------------------------------------------------------------------------ 50// キューの生成 51//------------------------------------------------------------------------------ 52void ZyuSyoDlgNew::make_queue() 53{ 54 struct Queue *que; 55 struct Queue *head; 56 57 for( int count=0; count<256; count++ ) 58 { 59 //キューの生成 60 if( count == 0 ) 61 { 62 que = (struct Queue*)malloc(sizeof(struct Queue)); // メモリの確保 63 m_pQueue = que; // 先頭をメンバ変数 64 } 65 else 66 { 67 que->next = (struct Queue*)malloc(sizeof(struct Queue)); // ポインタを繋ぐ 68 que = (struct Queue*)que->next; // nextの値をqueに 69 } 70 que->next = NULL; // nextにNULL 71 memset(que, 0, sizeof(struct Queue)); // クリア 72 73 // キューを切り離す(先頭) 74 if( m_pQueue != NULL ) 75 { 76 head = m_pQueue; 77 m_pQueue = (struct Queue*)head->next; 78 } 79 80 } 81} 82 83//------------------------------------------------------------------------------ 84// キューの解放 85//------------------------------------------------------------------------------ 86void ZyuSyoDlgNew::QueClose() 87{ 88 struct Queue *que; 89 que = m_pQueue; 90 while( 1 ) 91 { 92 m_pQueue = (struct Queue*)que->next; 93 free( que ); 94 que = m_pQueue; 95 if( que == NULL ) 96 { 97 break; 98 } 99 } 100} 101 102//----------------------------------------------------------------------------------------------------------------------------- 103 104//------------------------------------------------------------------------------ 105// 送信ボタン押下処理 106//------------------------------------------------------------------------------ 107void ZyuSyoDlgNew::OnBnClickedGo() 108{ 109 110 //チェックボックス部 111 ((CButton*)GetDlgItem(IDC_TYPE_B))->SetCheck(true); 112 ((CButton*)GetDlgItem(IDC_TYPE_G))->SetCheck(true); 113 114 //------------// 115 //名前部の取得// 116 //------------// 117 struct strZyusyo simei; 118 ((CEdit*)GetDlgItem(IDC_NAME_I))->GetWindowText( simei.name ); 119 120 //------------// 121 //住所部の取得// 122 //------------// 123 struct strZyusyo zyusyo; 124 ((CEdit*)GetDlgItem(IDC_HOME_I))->GetWindowText( zyusyo.home ); 125 126 //------------// 127 //年齢部の所得// 128 //------------// 129 struct strZyusyo nenrei; 130 ((CEdit*)GetDlgItem(IDC_TOSI_I))->GetWindowText( nenrei.tosi ); 131 132 //------------// 133 //Noの所得 // 134 //------------// 135 struct strZyusyo *no; 136 CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_NO); 137 no = (struct strZyusyo*)long(pComboBox->GetCurSel()); 138 139 //----------------// 140 //性別の取得(男性)// 141 //----------------// 142 struct strZyusyo boy; 143// CString strType; 144 if( ( (CButton*)GetDlgItem(IDC_TYPE_B) ) ->GetCheck() == BST_CHECKED ) 145 { 146 //チェックされた場合の処理 147 boy.type = ("男性"); 148 } 149 else 150 { 151 //チェックされていない場合の処理 152 boy.type = (""); 153 } 154 155 //----------------// 156 //性別の判定(女性)// 157 //----------------// 158 struct strZyusyo rady; 159 if( ( (CButton*)GetDlgItem(IDC_TYPE_G) ) ->GetCheck() == BST_CHECKED ) 160 { 161 //チェックされた場合の処理 162 rady.type = ("女性"); 163 } 164 else 165 { 166 //チェックされていない場合の処理 167 rady.type = (""); 168 } 169 170 CDialog::OnOK(); 171 172} 173 174//------------------------------------------------------------------------------ 175// クリアボタン押下処理 176//------------------------------------------------------------------------------ 177void ZyuSyoDlgNew::OnBnClickedClear() 178{ 179} 180 181 182BOOL ZyuSyoDlgNew::OnInitDialog() 183{ 184 m_LC.InsertColumn(m_LC.GetHeaderCtrl().GetItemCount(),L"No",LVCFMT_LEFT,50); 185 m_LC.InsertColumn(m_LC.GetHeaderCtrl().GetItemCount(),L"氏名",LVCFMT_LEFT,100); 186 m_LC.InsertColumn(m_LC.GetHeaderCtrl().GetItemCount(),L"住所",LVCFMT_LEFT,100); 187 188} 189 190//------------------------------------------------------------------------------ 191// リスト処理 192//------------------------------------------------------------------------------ 193void ZyuSyoDlgNew::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult) 194{ 195 LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); 196 // TODO: ここにコントロール通知ハンドラー コードを追加します。 197 *pResult = 0; 198 199} 200 201//------------------------------------------------------------------------------ 202 203 204#include "afxcmn.h" 205#include "afxwin.h" 206#if !defined(AFX_RETUCHGDLG_H__6074ED4B_5F86_4318_A3E5_318EC9A020C3__INCLUDED_) 207#define AFX_RETUCHGDLG_H__6074ED4B_5F86_4318_A3E5_318EC9A020C3__INCLUDED_ 208 209#if _MSC_VER > 1000 210#pragma once 211#endif 212 213#define N_MAX 256 214 215//------------------------------------------------------------------------------ 216// 構造体 217//------------------------------------------------------------------------------ 218struct strZyusyo 219{ 220 CString name; // 名前 221 CString home; // 住所 222 CString type; // 性別 223 CString tosi; // 年齢 224 long no; // 住所録No 225}; 226//------------------------------------------------------------------------------ 227// キューの構造体 228//------------------------------------------------------------------------------ 229struct Queue 230{ 231 void *next; // nextポインタ 232 struct _strZyusyo *data; // 住所録の要素 233}; 234 235 236 237//------------------------------------------------------------------------------ 238// ZyuSyoDlgNew ダイアログ 239//------------------------------------------------------------------------------ 240class ZyuSyoDlgNew : public CDialogEx 241{ 242 DECLARE_DYNAMIC(ZyuSyoDlgNew) 243 244public: 245 ZyuSyoDlgNew(CWnd* pParent = NULL); // 標準コンストラクター 246 virtual ~ZyuSyoDlgNew(); 247 248// ダイアログ データ 249 enum { IDD = IDD_TOP }; 250 251private: 252 struct Queue* m_pQueue; 253 struct Queue* m_pQueue2; 254 void make_queue(); 255 void enqueue(Queue *que,struct Queue *data); 256 int dequeue(Queue *que,struct Queue *data); 257 int queue_is_empty(Queue *que); 258 void ZyuSyoDlgNew::OnClose(Queue *que, struct Queue *next); 259 void QueClose(); 260 CListCtrl m_List; 261 262 263protected: 264 BOOL ReDialog(); 265 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV サポート 266 267 DECLARE_MESSAGE_MAP() 268public: 269 afx_msg void OnBnClickedGo(); 270 afx_msg void OnBnClickedClear(); 271 afx_msg void OnEnChangeNameI(); 272 CMFCListCtrl m_LC; 273 afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult); 274 virtual BOOL OnInitDialog(); 275};

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

分からない部分を一つずつ考えていきましょう
(1)指定の行に各アイテム(No、名前、住所、性別、年齢)をセットする
(2)(1)でセットした行の中身をクリアする

分かっていないのは上記2つくらいでしょう。
マニュアルを見るとどうすればよいか記載してありますし、例もあるので参考にしてみてください

投稿2016/10/21 03:04

ardin

総合スコア540

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずはマニュアル読もうや。サンプルも(簡単だけど)ソコにあるから。

投稿2016/10/21 01:39

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問