void CExercise7_1Dlg::OnBnClkButtonAdd()
{
int nCount = m_listControl.GetItemCount();
LV_ITEM lvItem2;
UpdateData(TRUE);
AEDlg a;
if (a.DoModal() == MB_OK)
{
if (!a.m_strTitle.IsEmpty() && !a.m_strAlbum.IsEmpty() && !a.m_strArtist.IsEmpty() && !a.m_strEtc.IsEmpty() && !a.m_strGen.IsEmpty() && !a.m_strYear.IsEmpty())
{
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 0;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strTitle;
m_listControl.InsertItem(&lvItem2);
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 1;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strArtist;
m_listControl.InsertItem(&lvItem2);
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 2;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strAlbum;
m_listControl.InsertItem(&lvItem2);
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 3;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strGen;
m_listControl.InsertItem(&lvItem2);
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 4;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strYear;
m_listControl.InsertItem(&lvItem2);
lvItem2.mask = LVIF_TEXT;
lvItem2.iItem = nCount;
lvItem2.iSubItem = 5;
lvItem2.pszText = (LPWSTR)(LPCTSTR)a.m_strEtc;
m_listControl.InsertItem(&lvItem2);
a.m_strTitle.Empty();
a.m_strAlbum.Empty();
a.m_strArtist.Empty();
a.m_strGen.Empty();
a.m_strYear.Empty();
a.m_strEtc.Empty();
UpdateData(FALSE);
}
else
{
MessageBox(_T("빈 칸 발생"), _T("잠깐"), MB_OK);
}
}
}
대충 코드 설명하자면
데이터를 추가하는 다이얼로그 창을 따로 띄워서
새로 뜬 다이얼로그 창에 입력한 내용들을 리스트에 저장하는 코드ㅇㅇ
근데 막상 실행시켜서 입력할거 다 입력하고 확인버튼 누르니까
리스트에 추가 자체가 안 되고, else부분 코드도 안 움직이던데
도대체 무슨 잘못을 했는지 모르겠다.
<추가>
// AEDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "Exercise7_1.h"
#include "AEDlg.h"
#include "afxdialogex.h"
// AEDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(AEDlg, CDialogEx)
AEDlg::AEDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_DIALOG_ADD, pParent)
, m_strTitle(_T(""))
, m_strAlbum(_T(""))
, m_strEtc(_T(""))
, m_strGen(_T(""))
, m_strYear(_T(""))
, m_strArtist(_T(""))
{
}
AEDlg::~AEDlg()
{
}
void AEDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_SONG, m_strTitle);
DDX_Text(pDX, IDC_EDIT_ALB, m_strAlbum);
DDX_Text(pDX, IDC_EDIT_ETC, m_strEtc);
DDX_Text(pDX, IDC_EDIT_GEN, m_strGen);
DDX_Text(pDX, IDC_EDIT_YEAR, m_strYear);
DDX_Text(pDX, IDC_EDIT_ARTIST, m_strArtist);
}
BEGIN_MESSAGE_MAP(AEDlg, CDialogEx)
END_MESSAGE_MAP()
// AEDlg 메시지 처리기입니다.
참고중인 문제 올려봄
트리 연동은 따로 생각하는 중인데
시발 함수 언급 존나 안해두네 아오
문제랑 비교했을 때 바뀐점 말하자면
1. 가상대학교 -> 루트로 변경
2. 학과들 -> 폴더1~폴더3으로 변경
3. 리스트 컬럼 -> 제목, 아티스트, 앨범, 장르, 연도, 기타 이렇게 6개로 늘림
이 이상 없음.
새 다이얼로그에서 넘어오긴함?
이힝 // 넘어오지도 않음ㅡㅡ;;소스코드 풀로 올려볼까?
그냥 어떤싣으러 했는지 설명해봐, 그리고 니가 짬? 아니면 대강 예제보고 복붙?
이힝 // 기존 다이얼로그(이걸 1이라고 칭함)에 리스트 컨트롤이 배치되어 있는데 1에 있는 추가 버튼을 누르면 새 다이얼로그 창(이걸 2라고 칭함)이 나타남. 그래서 2에 있는 입력 칸(에디트 컨트롤)에다가 입력할 거 다 하고 확인버튼 누르면 1에 있는 리스트에 2에 입력한 내용들이 추가되는 방식
2의 소스를 주셈
이힝//방금 글수정해서 올림
확인 눌렀을때 뭐가 실행되길 기대함?
구현된게 없는데
함수가
이힝//2에서 확인 눌렀을 때 입력한 내용들 죄다 1에 있는 리스트로 들어갔으면함. 사실 옆에 트리 구현도 해놓았는데 연동은 따로 할거임
이힝 // 따로 함수 구현 해줘야하나? 검색 몇 번 해보니까 함수 구현 언급은 없던데?
그럴리가 쉬발..
이힝 // 어떤 역할하는 함수 만들어야하는지 좀 알려주면 안됨? 함수만 만들어져 있다면 정상적으로 돌아간다는 거니까 함수 만들면 되겠네?
솔까말 나도 계속 생각해보니 2를 따로 만들어줘야하는 상황인데 병신같은 교재에서는 2에 대한 함수 언급을 거의 안함 개객기
아냐 내가 틀림 근데 책보고 하는중임? 근데 왜 제대로 안돼?
이힝 // 스캔본 떠서 보여줄까? 응용이라해봤자 엿도 없음. 걍 리스트에 컬럼추가한거 말곤 없어. 명불허전 지잡대라서 명불허전 교재가 존나 병신임. 오탈자도 심하고 걍 가끔씩 사람 돌게 만듬
방금 글수정해서 문제 올림 시발
ㅋㅋ 존나 웃기네
난 찾았따
디버깅할줄아니
이힝 // 디버깅 할줄아는데 어케하면 됨? 중단점 어디쯤에서 찍으면 되나?
if (a.DoModal() == MB_OK) MB_OK-> IDOK로 수정
ㄳㄳ첫번째 항목만 추가되는데 좀 더 찾아봐야겠다 ㄳㄳ
아 그러니까 제목만 추가됨ㅇㅇ잘못짠거 있나 봐야징
그러면 나머지 코드에는 문제 없지?
nCount++ 해보셈
아 아님
서브아이템 0,1,2,3,4에서 m_listControl.InsertItem(&lvItem2;);를 삭제
돌아와 궁금하다
이힝 // 안 나오는데???
5에는 남기고?
아 안되는게 맞네
1,2,3,4,5,에서 insert를 set으로하면?
크 존나 잘되네 ㄳㄳ 트리 연동은 컨트롤끼리 연결하라는데 뭔 소리인지 모르니 이쯤해야겠다 ㄳㄳ
후 힘든 하루다