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: Vòng lặp While trong BUTTON??

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

    Mặc định Vòng lặp While trong BUTTON??

    mình có ứng dụng, trong nút nhấn mình muốn lập 1 vòng lặp while để hiển thị kết quà.
    Mình muốn hỏi tại sao khi dùng vòng lặp while thì khi click nút nhấn khác không được ????
    Mình khôg thể dùng if đựoc. vì ứng dụng của mình muốn thực hiện nhiều lần (không biết số lượng vòng lặp_do đó không thể dùng for)
    Các bạn giúp với????

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    169

    Vì bình thường chương trình tạo ra sẻ chạy bằng 1 thread! Nếu dùng while thì toàn bộ thread đó sẻ chạy cái vòng while và không thể sử lý được các lệnh khác!
    Nếu bạn muốn vậy thì phải dùng multi thread!

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

    Cảm ơn bạn nhiều nha!
    Bạn có thể hướng dẫn cho mình được ko?? mới hoc C++ nên không rành lắm????

  4. #4
    No Avatar
    ngocbig Khách

    Code:
    //CWinThead* m_pThread;
    void CMFCAppDlg::OnBnClickedTest()
    {
    	m_pThread = AfxBeginThread(MyThreadProc,NULL);
    }
    
    //static method.
    UINT CMFCAppDlg::MyThreadProc(LPVOID lParam)
    {
    	SYSTEMTIME time;
    	CString s;
    	while (TRUE)
    	{
    		::GetLocalTime(&time);
    		s.Format(_T("Ngay %d thang %d nam %d %d:%d:%d"),time.wDay,time.wMonth,time.wYear,time.wHour,time.wMinute,time.wSecond);
    		AfxGetMainWnd()->SetWindowText(s);
    		Sleep(1000);
    	}
    	return 0;
    }
    Xem thêm về AfxBeginThread(), CWinThread, ThreadProc trong MSDN

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Trong MFC, có 1 cách rất đơn giản đó là:

    C++ Code:
    1. void DoEvents()
    2. {
    3.     MSG msg;
    4.     while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    5.     {
    6.         TranslateMessage(&msg);
    7.         DispatchMessage(&msg);
    8.     }
    9. }
    10.  
    11. bool pressedButon1 = false;
    12. void CMFCAppDlg::OnBnClickedButton1()
    13. {
    14.     pressedButon1 = true;
    15. }
    16.  
    17. void CMFCAppDlg::OnBnClickedTest()
    18. {
    19.     while (pressedButon1 == false)
    20.     {
    21.         //Do something...
    22.         DoEvents();
    23.     }
    24. }
    Đã được chỉnh sửa lần cuối bởi DKhanh : 13-11-2008 lúc 09:42 AM.

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

    Mặc định Vòng lặp While trong BUTTON??

    Bạn ơi, Mình cũng làm thử nhưng ko chạy, các bạn giúp mình với???

    C++ Code:
    1. void CHH_ThuView::OnBnClickedButton1()
    2. {
    3.    AfxBeginThread(lap_lai,NULL);
    4. }
    5.  
    6. UINT CHH_ThuView::lap_lai(LPVOID pParam)
    7. {
    8.         ist=true;
    9.     while (ist==true)
    10.        {
    11.             ///công việc phải làm
    12.        }
    13.     return 0;
    14. }

    nhưng khi Build nó lại báo lỗi như sau:
    error C3867: 'CHH_ThuView::lap_lai': function call missing argument list; use '&CHH_ThuView::lap_lai' to create a pointer to member.

    Mình không hiểu báo sai chỗ nào??? Các bạn chỉ giúp. nếu sai về Thread, xin hướng dẫn cách làm ???
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 13-11-2008 lúc 01:59 PM.

  7. #7
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Bạn nhìn lại chỗ này : //static method.

    Có thể hàm lap_lai của bạn chưa phải là hàm static, hoặc global. Bạn thử thêm vào khóa static xem sao.

  8. #8
    Ngày gia nhập
    09 2008
    Bài viết
    188

    Mình cũng đã sửa, thêm Static, trong BUTTON không còn báo lỗi, nhưng khi thực thi lệnh trên ListBox thì lại báo lỗi.
    Mong các bạn chỉ giúp !

    [\CODE]void CHH_ThuView::OnBnClickedButton1()
    {
    AfxBeginThread(lap_lai,NULL);
    }
    UINT CHH_ThuView::lap_lai(LPVOID pParam)
    {
    CListBox *list;
    list=(CListBox*)GetDlgItem(IDC_LIST1); ///báo lỗi ở dòng này
    list->AddString(szResult);
    list->SetCurSel( list->GetCount() - 1);
    return 0;
    }[\CODE]

    error C2352: 'CWnd::GetDlgItem' : illegal call of non-static member function

    Mình cần phải sửa gì đây????
    Đã được chỉnh sửa lần cuối bởi nam_dkn : 14-11-2008 lúc 09:06 AM.

  9. #9
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Cách đơn giản nhất là gọi hàm DoEvents của mình. Còn bạn muốn làm theo thread thì bạn phải truyền vào thread thông số là this (là con trỏ tới instance của Dialog hiện hành) thay vì bạn truyền null ở lời gọi AfxBeginThread.

    [/CODE]void CHH_ThuView::OnBnClickedButton1()
    {
    AfxBeginThread(lap_lai,(LPVOID)this);
    }
    UINT CHH_ThuView::lap_lai(LPVOID pParam)
    {
    CHH_ThuView* myDialog = (CHH_ThuView*) pParam
    CListBox *list;
    list=(CListBox*)myDialog->GetDlgItem(IDC_LIST1); ///báo lỗi ở dòng này
    list->AddString(szResult);
    list->SetCurSel( list->GetCount() - 1);
    return 0;
    }[\CODE]

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    88

    Code:
    void CHH_ThuView::OnBnClickedButton1()
    {
         AfxBeginThread(lap_lai,(LPVOID)this);
    }
    UINT CHH_ThuView::lap_lai(LPVOID pParam)
    {
         CHH_ThuView* myDialog = (CHH_ThuView*) pParam
         CListBox *list;
         list=(CListBox*)myDialog->GetDlgItem(IDC_LIST1); ///báo lỗi ở dòng này
         list->AddString(szResult);
         list->SetCurSel( list->GetCount() - 1);
         return 0;
    }
    nếu sửa như bạn mình có thử vào 1 bài của mình thì vẫn lỗi hệt như bạn namdk

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

  1. Graphic Sắp xếp lại vị trí các button khi có 1 button trong danh sách set thuộc tính invisible
    Gửi bởi phong1040572 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 15
    Bài viết cuối: 11-11-2013, 08:33 AM
  2. gọi sự kiện click của button trong code behind dùng button html
    Gửi bởi teodainhan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 02-09-2013, 02:15 PM
  3. Database Lỗi button bị vô hiệu hóa khi thay đổi lệnh thực thi bên trong button???
    Gửi bởi vodanh01 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 30-03-2012, 09:59 AM
  4. Chạy vòng lặp cho đến khi bấm button thì dừng lại
    Gửi bởi manhhung1109 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 21-07-2011, 05:05 PM
  5. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM

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