Giả sử Dialog1 gọi Dialog2 bằng cách:
trong Dialog2 có CString m_sTen thì lấy m_sTen bằng cách dùng dlg.m_sTen.Code:CDialog2 dlg; dlg.DoModal();
Không biết có đúng ý của bạn không nữa.
Em muốn gán 1 biến trong 1 Dialog này cho 1 biến trong 1 Dialog khác thì phải làm sao a?Chẳng hạn như ta có 1 biến
CString m_sTen;
ở trên 1 Dialog nào đó,em muốn lấy lại giá trị của biến này để sử dụng trong các Dialog khác thì phải làm sao?
Giả sử Dialog1 gọi Dialog2 bằng cách:
trong Dialog2 có CString m_sTen thì lấy m_sTen bằng cách dùng dlg.m_sTen.Code:CDialog2 dlg; dlg.DoModal();
Không biết có đúng ý của bạn không nữa.
Cái này là hiển thị Dialog của CDialog2 phải không anh?Em cũng làm trường hợp này rồi!
//**************************************
Ý của em là như vậy nè anh:
Trên Dialog1 có 1 biến là CString m_sTen. Dialog1 gọi Dialog2 (như anh làm ở trên) và trên Dialog2 lại có 2 Tab chẳng hạn(Ví dụ như là Tab1 và Tab2 đi).Em muốn hiển thị biến m_sTen (của Dialog1) trên Tab1.
//**************************************
Em làm mãi mà không được!Có thế em diễn đạt hơi khó hiểu!Mới học mà anh!He he!Giúp em với nha!
Thanks
Hiện thị trên Tab thì chính là hiện thị trên Dialog còn đâu. Tóm lại là không hiểu lắm nhưng cái đó cũng chẳng quan trọng. Để gán m_sTen của Diglog1 cho Dialog2 (theo như bạn nói) thì ở lớp chứa Dialog2 bạn có một hàm để gán biến m_sTen ví dụ là SetString (CString) sau đó gọi dlg.SetString(m_sTen) hoặc là cho luôn vào hàm khởi tạo cũng được.
Em hiểu cách làm của bác!Đối với biến như là static em nghĩ chắc sẽ làm thế được!Nhưng với biến của Edit Box thì làm sao hả anh?Bởi vì mình muốn lấy giá trị của biến này thì phải dùng
UpdateData(FALSE);
Nhưng trong Diallog2 thì làm sao mà lấy được giá trị của "m_sTen" trong Dialog1 được nhỉ?
Nếu dùng biến toàn cục thì có thể được không anh?Nó giống như là trung gian!Tức là ta sẽ gán m_sTen cho biến toàn cục sau đó gán biến này cho biến trên Dialog2.Anh nghĩ làm như vậy có được không?Em làm nhưng toàn bị lỗi!Làm sao để mình sử dụng được 1 biến toàn cục trong toàn bộ project hả anh?
Và nếu anh có cách gì khác thì chỉ cho em với nha!
Code:CString CDialog1::GetTen() { UpdateData(true); CString res = m_sTen; UpdateData(false); return res; }
Em đã thử làm như anh nói!Vấn đề là khi em khai báo 1 đối tượng của CDialog1 trong Dialog2(để sử dụng hàm GetTen()) thì nó báo lỗi(em khai báo bằng cách click chuột phải vào CDialog2 trên class view và chọn "Add Member Variable").Nguyên bản được gửi bởi nguyentuan2
Còn nếu em khai báo như thế này thì cũng không thành công,khi dịch chương trình thì không có lỗi,nhưng khi chạy chương trình thì không chạy được.
//************************************************** ******
BOOL CDialog2::OnInitDialog()
{
CDialog::OnInitDialog();
CDialog1 doiTuong;
m_sHienThi = doiTuong.GetTen();
UpdateData(FALSE);
}
//************************************************** ******
Có phải ý anh là thế này không?
Anh chỉ rõ hơn dùm em nha!Em sắp phải nộp bài tập này rồi!
Thanks
Đọc từ đầu đến cuối vẫn không hiểu cậu htqh này hỏi cái gì nữa. Tốt nhất là cậu upload cái đang làm rồi bảo sửa theo ý mình (dĩ nhiên chỉ một phần) có khi nhanh hơn đấy.
Ui,bài của em liên quan nhiều thứ lằng nhằng lắm anh à!Post lên thì phải post cả project luôn đó!
Ý của em là làm sao mà sử dụng 1 biến toàn cục cho toàn bộ project,nghĩa là trong bất kỳ file nào trong project cũng có thể dùng giá trị của biến này!Chỉ cần các anh chỉ cho em cái này thôi!Những thứ khác em sẽ thử tự làm! Nếu vẫn không thành công thì lại hỏi các anh! he he
chỉ cần khai báo 1 biến không thuộc 1 class/struct nào, thì biến đó sẽ là toàn cục. Nên khai báo trong 1 file .cpp, và nếu trong file .cpp/.h khác muốn truy xuất biến đó thì khai báo extend
ví dụ:
//a.cpp
int a;
//b.cpp
extend int a;
...
//b.h
extend int a;
...