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

Đề tài: cho mình hỏi về lập trình windows + GDI + Keystroke (căn bản thôi)

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

    Mặc định cho mình hỏi về lập trình windows + GDI + Keystroke (căn bản thôi)

    Mình mới học thôi. Nhưng vì phải nộp bài vào tuần sau nên mình hỏi nhanh luôn không thì không kịp...
    Mình đang tập làm 1 bài ví dụ đc mô tả như sau:
    Tạo 1 form, vẽ 1 hình bất kì (đường thẳng chẳng hạn) lên form đó. Xử lý keystroke (4 phím left, right, up, down) để di chuyển hình đó theo 4 hướng tương ứng.
    Chỉ đơn giản thế thôi. Nhưng mình mới học thôi. Đến chổ xử lý keystroke, mình không UpdateWindow() đc.
    Trong WndProc, đoạn xử lý keystroke của mình như sau:
    Code:
    case WM_KEYDOWN:
    		switch ( wParam)
    		{
    			case VK_LEFT: 
    				X -= X;
    				UpdateWindow(hWnd);
    				break;
    			case VK_RIGHT: 
    				X += X;
    				UpdateWindow(hWnd);
    				break;
    			case VK_UP: 
    				Y -= Y;
    				UpdateWindow(hWnd);
    				break;
    			case VK_DOWN:
    				Y += Y;
    				UpdateWindow(hWnd);
    				break;
    		}
    Còn WM_PAINT của mình thì như sau:
    Code:
    case WM_PAINT:
    		hdc = BeginPaint(hWnd, &ps);
    			GetClientRect (hWnd, &rect);
    			MoveToEx (hdc, X, Y, NULL) ;
    			LineTo(hdc, X + 100, Y + 50) ; 
    		EndPaint(hWnd, &ps);
    		break;
    Chương trình không báo lỗi, chỉ là nó kô di chuyển khi có keystroke ...
    Xin các bạn cho mình 1 lời hướng dẫn. Xin cảm ơn rất nhiều ... Làm đc cái này mình mới bắt tay vào làm bt cho tuần sau đc ...

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

    trong đoạn code ở trên bạn thay UpdateWindow thành InvalidateRect hay là Invalidate(....) thử được không.

    chi tiết tham khảo thêm trong MSDN bạn nhé.

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

    Được. Với lại XY nhớ để global thì ok

    updatexxx -> InvalidateRect(hWnd,&rt,true);

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

    Cảm ơn 2 bạn đã hướng dẫn. Mình đã redraw đc với hàm InvalidateRect. Nhưng có 1 điều là mình phải thay cái biến hWnd bằng NULL nó mới redraw, nếu giữ hWnd thì nó không thay đổi.
    Mình nghĩ chỉ thực hiện trên 1 form thì dùng hWnd vẫn đúng phải không ạ?

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

    Theo như zkday được biết thì NULL là handle của desktop.(cha của mọi cửa sổ[windown]).
    Nên khi bạn để vào là NULL thì nó sẽ Redraw lại toàn bộ Window nên vẽ lại được cái Window của bạn là điều đương nhiên.
    Nếu bạn chỉ thực hiện trên 1 Window(form) thì bạn phải thực lấy đúng handle của nó.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 23-09-2008 lúc 01:09 PM.

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

    Mặc định cho mình hỏi về lập trình windows + GDI + Keystroke (căn bản thôi)

    Nếu bạn để nguyên UpdateWindow(NULL) thì ok. Nhưng ko tốt.
    Cứ chuyển qua Invalidate(xxx) như mình viết ở trên, chắc chắn được mình mới test mà ?

    Edit:
    PHP Code:
    #define con_gái 1 // con gái luôn đúng
    int tán_gái()
    {
       while(
    con_gái)//trong khi còn con gái
             
    return tán_gái();
       return 
    0;

    Nếu thế tớ phải dịch là :
    Trong khi mà con gái còn đúng
    Thì xxx
    Do đó đưa về lại:
    PHP Code:
     while(con_gái)//trong khi còn con gái
      
    {
           if( 
    fix_con_gái())
             return 
    tán_gái();
     }
    ....
     
    fix_con_gai(){
        
    con_gái = !con_gái;  // con gái là chúa nói dối, điêu thế.

    Đã được chỉnh sửa lần cuối bởi kidkid : 23-09-2008 lúc 01:09 PM.

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

    đoạn code của zkday xin nói xíu về câu if.
    while(congai) tức là trong khi còn con gái.

    đoạn của kid đáng phải suy nghĩ. nhiều cái sâu xa quá.

    hihi. xì pam 1 cái

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

  1. Tài liệu học Windows Forms căn bản.
    Gửi bởi nhulongctk35 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 25-12-2013, 10:08 PM
  2. Cùng nhau hoàn thiện tiếng Việt cho Windows 8, Windows Live và Windows Store
    Gửi bởi msfan trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 1
    Bài viết cuối: 28-02-2012, 09:40 AM
  3. Keystroke trong C# (ALT/CTRL + ....)
    Gửi bởi hoanglamdz trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 20-07-2011, 12:10 AM
  4. Phần mềm đăng nhập máy tình bằng Webcam cho Windows Vista and Windows 7-(32 va 64bit)
    Gửi bởi digiman87 trong diễn đàn Software (Phần mềm) | Ebooks
    Trả lời: 0
    Bài viết cuối: 08-02-2011, 08:58 PM
  5. Cần tài liệu về windows form C# căn bản
    Gửi bởi quockhanh.K94 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 4
    Bài viết cuối: 08-08-2010, 08:15 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