- 네이버 검색
다이얼로그 자식창에서 부모에 값 넘기기mongk23 2008.06.22 20:27 |
답변 1 조회 209 |
---|
다이얼로그기반 프로젝트에서
부모창이 차일드다이얼로그를 만들었습니다.
차일드다이얼로그에 버튼을 하나 만들고 부모창에서 차일드의 버튼이 눌렸는지를 어떻게 알수 있을까요?
참고로
왼쪽버튼클릭이벤트에서 차일드 다이얼로그 버튼위치를 알아내서 해도
안됩니다.
설명좀 부탁드려요
의견 쓰기
질문자 채택된 경우, 추가 답변 등록이 불가합니다.
re: 다이얼로그 자식창에서 부모에 값 넘기기 |
|
---|
질문자인사 좋은 답변 감사합니다. 많은 도움이 되었습니다.
안녕하세요. Tipssoft입니다.
'대화상자간에 데이터 주고받는 예제'가 있어 알려드립니다.
참조하세요.
[그림 1_1]
[그림 1_2]
[그림 1_3]
◈ 개발 환경
1. OS 환경 : WindowXP
2. 사용 언어 : VC++ 6.0
◈ 프로그램 설명
1. 각 에디터컨트롤에서 데이터를 입력하고 [대화상자를 생성하여 편집하기]버튼을 클릭하면
ModifyDlg대화상자가 생성되면서 호출되는 WM_INITDIALOG 메시지에서 해당 대화상자의
에디터컨트롤에 데이터를 설정하도록 하였습니다.
2. ModifyDlg대화상자가 종료되기 전에 각 에디터컨트롤에서 편집된 데이터를 얻어서 멤버변수에
저장하고 DoModal함수가 끝나는 동시에 ModifyDlg대화상자를 생성했던 부모 대화상자에
해당 에디터컨트롤에 데이터를 설정하도록 하였습니다.
◈ 중요 소스 설명
................... 중간 생략 ......................
◈ 중요 소스 설명
CDialog에서 계승받은 ExamDataExchangeDlg클래스에 OnModifyButton()함수와 ModifyDlg클래스에
SetUserData()함수와 GetUserData()함수에 대한 코드입니다.
void CExamDataExchangeDlg::OnModifyButton()
{ // ModifyDlg로 전달할 값을 현재 대화상자의 에디트 컨트롤에서 얻는다. CString name; GetDlgItemText(IDC_NAME_EDIT, name); int age = GetDlgItemInt(IDC_AGE_EDIT); ModifyDlg ins_dlg; // ModifyDlg 대화상자가 생성되기 전에 넘겨줄 데이터를 넘겨주어야 한다. 그래야지 // 대화상자가 생성되면서 호출되는 WM_INITDIALOG 메시지에서 해당 대화상자의 컨트롤에 // 값을 설정해줄수 있다. ins_dlg.SetUserData(name, age); // 대화상자를 생성한다. if(IDOK == ins_dlg.DoModal()){ // ModifyDlg 대화상자의 "확인" 버튼을 누르면 DoModal 함수는 IDOK라는 값을 // 반환하게 된다. 따라서 정상적으로 편집을 완료했다는 뜻이므로 ModifyDlg에서 // 편집된 값을 얻어서 자신의 에디트 컨트롤에 반영해야한다. 하지만 // ModifyDlg 대화상자는 이미 종료된 상태이고 편집에 사용했던 에디트 컨트롤도 // 같이 사라진 상황이라서 직접적으로 에디트 컨트롤에서 값을 얻지 못하기 때문에 // ModifyDlg이 사라지기 전에 멤버 변수에 저장한 값을 이용해야한다. // ModifyDlg에서 편집된 값을 얻는다. ins_dlg.GetUserData(name, age); // ModifyDlg에서 받은 값을 현재 대화상자의 에디트 컨트롤에 설정한다. SetDlgItemText(IDC_NAME_EDIT, name); SetDlgItemInt(IDC_AGE_EDIT, age); } } ====================================================================================
void ModifyDlg::SetUserData(CString parm_name, int parm_age)
{ // 부모 대화상자에서 전달한 데이터를 멤버 변수에 저장한다. m_name = parm_name; m_age = parm_age; } ====================================================================================
void ModifyDlg::GetUserData(CString &parm_name, int &parm_age)
{ // 현재 멤버 변수가 가지고 있는 값을 매개변수에 복사해준다. // 이 함수는 ModifyDlg를 생성한 부모 대화상자에서 호출할것이며 // DoModal이 끝난후에 사용할 것이다. parm_name = m_name; parm_age = m_age; } |
Continue...(추가적으로 코드가 필요하신 경우에는 소스를 다운받아 참조하세요.)
http://www.tipssoft.com/bulletin/board.php?bo_table=update&wr_id=245&page=4
출처 : www.tipssoft.com
부모창에서 자식창으로..자식창에서 부모창으로 값넘기기mintx1513 2008.04.17 18:32 |
답변 1 조회 1,965 |
---|
의견 쓰기
질문자 채택된 경우, 추가 답변 등록이 불가합니다.
re: 부모창에서 자식창으로..자식창에서 부모창으로 값넘기기 |
|
---|
질문자인사 좋은 답변 감사합니다. 많은 도움이 되었습니다.
출처 : http://msdn2.microsoft.com/en-us/library/ms533723.aspx
아래의 함수를 사용하셔서 팝업창을 띄우시면 가능하실 것입니다.
vReturnValue = window.showModalDialog(sURL[, vArguments][, sFeatures]);
vReturnValue = window.showModelessDialog(sURL[, vArguments][, sFeatures]);
팝업창을 띄우실 때
vArguments 에 들어가는 변수를 이용하여 부모창의 값을 팝업창으로 넘길 수 있습니다.
이것을 Object나 Array 형으로 선언해서
변수 여러개를 한꺼번에 넘기실 수 있습니다.
자바 스크립트로 그냥 빈 클래스(객체) 만들어 사용하시는것이 가장 편할것 같습니다...
function jsDialog(x){
var mObject = new Object();
mObject.xml = x;
mObject.my_key1 = 3;
mObject.my_key2 = 10;
var rs = showModalDialog('files.asp', mObject, 'scroll:no;resizable:no;center:yes;status=0');
....
}
위와 같이 호출하고.. 위에서 x는 XML Object 라고 가정합니다.......
모달창에서는 아래와 같이 사용할수 있습니다...
부모창에서 모달창에서 수정한 my_key1, my_key2 도 받아서 다시 사용할수 있습니다.
function test(){
var x = window.dialogArguments.xml
alert(x.xml);
var k1 = window.dialogArguments.my_key1
var k2 = window.dialogArguments.my_key2
...
window.dialogArguments.my_key1 = 13
window.dialogArguments.my_key2 = 30
}
'.NET' 카테고리의 다른 글
파일 쓰기 FileStream | WinForm Program 설정 파일 검색 txt 검색 CanSeek 프로퍼티, Position 프로퍼티, Seek 메서드 (0) | 2009.01.16 |
---|---|
C# Enumerator 인터페이스, 반복기 일반화 using System.Collections.Generic.IEnumerator <T> GetEnumerator() 관련 예제 (0) | 2008.12.26 |
C# 제네릭 관련 예제 (0) | 2008.12.24 |
C# Mdi 프로그래밍에서 자식창의 값을 얻어오는 방법 (0) | 2008.12.15 |
ASP.NET DLL만들기 매서드 만들기 예제 참고 헬퍼 클래스 (0) | 2008.12.15 |
C# 폼에 값넘기는것 참고사항 이벤트핸들러 sender as 쓰고 (0) | 2008.11.24 |
C# 소켓 프로그래밍의 개요 (0) | 2008.11.24 |
C# CDI+ 키보드 마우스 제어 관련 예제 소스 (0) | 2008.11.21 |