Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: [HELP]Dialog trong MFC

  1. #1
    Ngày gia nhập
    07 2008
    Bài viết
    4

    Wink [HELP]Dialog trong MFC

    Mình gặp vấn đề trong việc viết chương trình bằng MFC,mình tạo 1 cửa sổ chính (class CMyWin::CFrameWnd) trên đó có 1 button tạm gọi là "Nhập số" chẳng hạn,nhấn vào hiện lên 1 dialog,cho ng dùng nhập vào,đặt nó vào biến data của cửa sổ chính,code như sau:
    Code:
    void CMyDialog::OnOK()
    {
    	CMyWin *mw=(CMyWin*)GetParent();
    	char s[20];
    	CString c;
    	CEdit *ed;
    	ed=(CEdit*)GetDlgItem(IDT_DATANODE);
    	ed->GetWindowText(s,20);
    	mw->data=atoi(s);
    	CDialog::OnOK();
    }
    nhưng sau khi nhấn OK thì biến data vẫn ko thay đổi,vì lý do khách quan nên mình ko thể up project lên dc,bạn nào bit thì cho mình vài ý kiến!nếu dc có thể làm 1 bài đơn giản cho mình tham khảo,như nhấn vào button,hiện lên dialog,kết quả hiện lên ở cửa sổ chính số vừa nhập là chẵn hay lẻ thôi cũng dc!và đừng dùng wizard nhé,khó kiểm soát lắm!thanks nhiu

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn thử gài breakpoint trong hàm OnOK xem, mình nghĩ khi bạn nhấn OK thì code đó chưa được thực thi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Bắt đầu 'Bói'
    1 - CMyWin bạn khai báo nó như thế nào.
    2 - Xong câu lệnh này bạn làm sao biết được là biến data của bạn không thay đổi? khi bạn chưa có một động thái nào cho việc show ra màn hình hay làm một cái gì đó đại loại như vậy?
    Visual C++ Code:
    1.        mw->data=atoi(s);
    2.     CDialog::OnOK();

  4. #4
    Ngày gia nhập
    04 2008
    Nơi ở
    Ha Noi
    Bài viết
    5

    bạn nên dùng hàm UpdateData(TRUE/FALSE);
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 27-10-2008 lúc 09:09 PM.

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi ngtuananh_vn Xem bài viết
    bạn nên dùng hàm UpdateData(TRUE/FALSE);
    cách này chắc ko được vì bạn ấy ko dùng biến đại diện mà lấy trực tiếp title của textbox.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    07 2008
    Bài viết
    4

    Mặc định [HELP]Dialog trong MFC

    Trích dẫn Nguyên bản được gửi bởi zkday2686 Xem bài viết
    Bắt đầu 'Bói'
    1 - CMyWin bạn khai báo nó như thế nào.
    2 - Xong câu lệnh này bạn làm sao biết được là biến data của bạn không thay đổi? khi bạn chưa có một động thái nào cho việc show ra màn hình hay làm một cái gì đó đại loại như vậy?
    Visual C++ Code:
    1.        mw->data=atoi(s);
    2.     CDialog::OnOK();
    Tất nhiên mình có show ra màn hình biến data mới bit là nó ko thay đổi chứ!!ko lẽ mình nói suông!
    jờ chẳng hạn CMyWin mình khai báo thế này:
    Code:
    class CMyWin:public CFrameWnd
    {
    public:
         int data;
         void Nhap();//tương ứng với button Xuất
         void Xuat();//tương ứng với button Nhập
    };
    void CMyWin::Nhap()
    {
        CDialog d(IDD_DIALOG,this);//IDD_DIALOG là ID của dialog
        d.DoModal();
    }
    void CMyWin::Xuat()
    {
        char s[40];
        sprintf(s,"Số vừa nhập là:%d",data);
        MessageBox(s);
    }
    thế thôi!phần OnOK của dialog như trên,khi nhấn Xuất hiện lên message ở vị trí data là -82...dù nhập vào số nào đi nữa!Plz help me
    Đã được chỉnh sửa lần cuối bởi rocker216 : 28-10-2008 lúc 11:02 AM.

  7. #7
    Ngày gia nhập
    07 2008
    Bài viết
    4

    Mình làm lại vấn đề mình hỏi vào cái project rùi nè,các bạn vào sửa nhé!
    project<---here

  8. #8
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình đã sửa cho bạn rồi đó.
    Attached Files Attached Files
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  9. #9
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Đúng như mèo nói Hàm OnOK nó không run.
    Bạn chép thiếu file Resource ==> ko Edit lại Dialog cho bạn được. pó hand

  10. #10
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Ko phải thiếu resource đâu zkday, OnOK nó ko run là vì cái dialog trong hàm OnAdd là cái CDialog chứ ko phải là CMyDialog -> ko chạy. Sửa cái CDialog trong OnAdd thành CMyDialog là xong ngay.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. Dialog::DoModal trong MFC. Làm thế nào để tương tác với dialog bên dưới?
    Gửi bởi rua_con trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 29-02-2012, 03:27 PM
  2. Cách gọi biến từ dialog vào dialog khác trong MFC
    Gửi bởi xXDarknessXx trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 21-12-2011, 10:08 PM
  3. gọi dialog từ 1 dialog trong Visual C++ như thế nào?
    Gửi bởi attain11 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 27-10-2010, 09:29 PM
  4. Xử lý Dialog trong MFC | Code điều Khiển Dialog con ở đâu?
    Gửi bởi AdminPro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 08-04-2009, 10:53 PM
  5. Di chuyển Dialog khi drag and drop phần thân Dialog (Client)?
    Gửi bởi mu9991 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 07-11-2008, 10:48 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn