Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Thắc mắc việc vẽ đưởng tròn duy chuyển?, làm ơn giúp mình

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

    Mặc định Thắc mắc việc vẽ đưởng tròn duy chuyển?, làm ơn giúp mình

    Mình không hiểu nỗi nữa, mình thấy code của mình vẫn ổn, nhưng khi chạy, nó hình tròn duy chuyển được 7-10s là bị treo rồi, à mà trong lúc hình tròn duy chuyển nút start của mình cũng biến mất, mình thử thêm nhiều nút vô, thì trong quá trình nó duy chuyển các nút button đều biến mất, mấy bạn cố gắng giúp minhg giải quết hai vấn đề trên, chân thành cảm ơn!
    Code:
    void CVe_O_Vuong_Duy_ChuyenDlg::OnButtonStart() 
    {
    	CPaintDC dc(this);
    	RECT rect;
    	GetClientRect(&rect);
    	mbool=1;
    	int i=0;
    	while(mbool==1)
    	{
    		while(x1+40<rect.right)
    		{
    			Sleep(10);
    			x1=x1+2;
    			HinhTron();
    			i++;
    		}
    		while(x1-40>rect.left)
    		{
    			Sleep(10);
    			x1=x1-2;
    			HinhTron();
    			i++;
    		}
    	}
    }
    
    void CVe_O_Vuong_Duy_ChuyenDlg::HinhTron()
    {
    	CPaintDC dc(this);
    	Invalidate(TRUE);
    	dc.Ellipse(x1-40,y1-40,x1+40,y1+40);
    }

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

    biến x1,x2, mình đã khởi tạo từ trước!

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Bạn dùng while(mbool==1) như vậy là tiêu rồi dù rằng bạn nghĩ có thể sửa mbool=0 ở 1 method bên ngoài để kết thúc vòng lặp.

    Có 2 hướng giải quyết.
    1. Nếu bạn vẫn muốn while(mbool) như vầy thì bắc buộc bạn phải sử dụng Thread, vì Thread là 1 tiểu trình nhỏ chạy cùng với App. Nó không gây kẹt cứng sự kiện như bạn đang làm. Bạn tham khảo thêm multithread nhé.

    2. Bạn dùng 1 cái Timer. Mỗi lần WM_TIMER thì cập nhật tọa độ và vẽ lại.

    Chúc thành công.

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

    Trích dẫn Nguyên bản được gửi bởi ZCoder87 Xem bài viết
    Bạn dùng while(mbool==1) như vậy là tiêu rồi dù rằng bạn nghĩ có thể sửa mbool=0 ở 1 method bên ngoài để kết thúc vòng lặp.

    Có 2 hướng giải quyết.
    1. Nếu bạn vẫn muốn while(mbool) như vầy thì bắc buộc bạn phải sử dụng Thread, vì Thread là 1 tiểu trình nhỏ chạy cùng với App. Nó không gây kẹt cứng sự kiện như bạn đang làm. Bạn tham khảo thêm multithread nhé.

    2. Bạn dùng 1 cái Timer. Mỗi lần WM_TIMER thì cập nhật tọa độ và vẽ lại.

    Chúc thành công.
    Về multithread thì mình biết, nhưng ý thứ hai thì mình chưa hiểu rõ ý bạn, trong thread vẽ hình tròn mình có thể vẽ bằng việc tăng biến tọa độ, chứ bạn nói là sử dụng message VM_TIMER để cập nhập tọa độ, liệu có cần thiết, bạn có thể giái đáp thắc mắc giúp mình không?

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Dễ mà.

    C++ Code:
    1. #define ID_TIMER1 100
    2. ..
    3. ..
    4. void YourApp::OnCreate(){
    5.      ...
    6.      ...
    7.      SetTimer(ID_TIMER1, 100, NULL); // Thiet lap Timer
    8. }
    9.  
    10. void YourApp::OnStartButton(){
    11.      m_bAnimal = true;
    12. }
    13.  
    14. void YourApp::OnStopButton(){
    15.      m_bAnimal = false;
    16. }
    17.  
    18. // WM_TIMER
    19. void YourApp:OnTimer(UINT nID){
    20.      if (m_bAnimal && nID==ID_TIMER1){
    21.           static int x = 0;
    22.           // Cap nhat toa do
    23.           if (...){
    24.                x+=2;
    25.                ...
    26.           }
    27.           if (...){
    28.                x-=2;
    29.                ...
    30.           }
    31.           // Ve hinh tron
    32.           DrawCircle(x, y);
    33.      }
    34. }

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

  1. Mã nguồn C Lỗi Code thuật toán Minpoint vẽ đường tròn không biết lỗi ở đâu mà không chạy được mong mọi người chỉ giúp.
    Gửi bởi keodautaydang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 23-02-2013, 10:04 AM
  2. Thuật toán Midpoint để vẽ đường tròn. Giúp đỡ mình với?
    Gửi bởi patuanit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 23-08-2012, 01:23 AM
  3. Di chuyển hình tròn chạy theo biên một hình tròn khác như thế nào?
    Gửi bởi ktxc15 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 16-03-2012, 12:01 PM
  4. Trả lời: 20
    Bài viết cuối: 27-02-2012, 12:05 AM
  5. Vẽ và di chuyển 1 hình tròn trên form trong C#?
    Gửi bởi nguenviet trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 09-04-2009, 04:12 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