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

Đề tài: Handle, một số vấn đề thắc mắc ?

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

    Mặc định Handle, một số vấn đề thắc mắc ?

    Em mới học C4W nên còn nhiều cái khó hiểu mong các bác giải thích

    Theo như trong sách thì HANDLE là con trỏ 32 bit để tham chiếu và quản lí các đối tượng. Ngoài ra còn có các kiểu khác như HINSTANCE, HMODULE, HWND ... cũng giống HANDLE đều là con trỏ 32 bit để tham chiếu, quản lí các đối tượng nhưng trong phạm vi hẹp hơn HANDLE. Vd như HWND để quản lí các cửa sổ ...

    1. Vậy nếu em dùng lẫn lộn các kiểu ấy thì có vấn đề gì xảy ra không ? Vd như thay vì dùng HWND thì em dùng HANDLE thì có sao ko ?

    2. Hiện thời em đang làm 1 bài tập về DLL nạp run-time. Có tham khảo nhiều đoạn code trên mạng thì thấy đoạn khai báo
    Code:
    HINSTANCE hLib = LoadLibary("DLL.dll");
    nhưng cũng có khi người ta dùng
    Code:
    HMODULE hLib = LoadLibary("DLL.dll");
    và cả 2 trường hợp đều chạy được. Như vậy dùng cái nào mới là chuẩn ? Và nếu nó giống nhau thì chia ra HINSTANCE hay HMODULE để làm gì ?

    Em xin cám ơn !

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

    Cái nào cũng đúng vì có cái này
    C Code:
    1. typedef HINSTANCE HMODULE;
    http://msdn.microsoft.com/en-us/libr...51(VS.85).aspx
    code ra gió bão

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

    Theo ý nghĩa thì HMODULE chuẩn hơn HINSTANCE. Khi một file .exe chạy, nó cùng với các dll mà nó cần sẽ được nạp vào bộ nhớ. Khi đó file exe và các dll gọi là các module. Khi file exe đang chạy mà ta chạy thêm một lần nữa ( ví dụ như mở 2 notepad ) thì những cái sau sẽ gọi là instance.
    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.

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

    Như vậy HANDLE = HINSTANCE = HMODULE = HWND = H... ???
    Nếu vậy thì chia ra làm gì cho rắc rối
    Đã được chỉnh sửa lần cuối bởi howto : 07-02-2009 lúc 05:30 PM.

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Trích dẫn Nguyên bản được gửi bởi howto Xem bài viết
    Như vậy HANDLE = HINSTANCE = HMODULE = HWND = H... ???
    Nếu vậy thì chia ra làm gì cho rắc rối
    sao lại rắc rối,cả 1 phát minh của MS cậu ơi , tất cả những gì mà cậu nói đều là kiểu HANDLE hết,nhưng HANDLE là kiểu số định danh,HWND là kiểu số định danh của các cửa sổ,HICON là kiểu số định danh của ICON,nếu cậu để tất cả chỉ là HANDLE thì sao VD đến khi ta cần dùng hàm For để duyệt thì chẳng hóa ra duyệt đến số mấy triệu cơ ah ( vì trên máy tính cái gì mà chẳng phải được xác định kiểu số )

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

    Mặc định Handle, một số vấn đề thắc mắc ?

    Chà thì ra tất cả đều giống nhau nhưng phân ra cho dễ quản lí
    Thế nhưng có một số kiểu lúc người ta dùng cái này, lúc thì cái kia thì làm sao mình biết mà dùng cho chính xác ?
    Vd như cái HINSTANCE và HMODULE ở trên kia ?

  7. #7
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Chà thì ra tất cả đều giống nhau nhưng phân ra cho dễ quản lí
    Thế nhưng có một số kiểu lúc người ta dùng cái này, lúc thì cái kia thì làm sao mình biết mà dùng cho chính xác ?
    Vd như cái HINSTANCE và HMODULE ở trên kia ?
    cậu đọc trong MSDN
    ms-help://MS.MSDNQTR.v90.en/winprog/winprog/windows_data_types.htm
    HINSTANCE
    Handle to an instance.

    This type is declared in WinDef.h as follows:


    typedef HANDLE HINSTANCE;
    HMODULE
    Handle to a module. The value is the base address of the module.

    This type is declared in WinDef.h as follows:


    typedef HINSTANCE HMODULE;
    2 cái na ná nhau,nhưng HINSTANCE thì rộng hơn HMODULE và quan trọng là cậu cũng không cần phải nhớ nhiều lắm đâu,đến khi nào viết code thì phải dựa vào MSDN

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

    - Mình đã nói rồi, về mặt cấu trúc dữ liệu tất cả đều là con trỏ 32 bit nhưng nội dung vùng nhớ mà chúng trỏ tới là khác nhau. MS đặt tên như vậy là cho dễ hiểu, đó chỉ là cái tên gợi nhớ về ý nghĩa của con trỏ. Nếu cố gắng ép kiểu thì biên dịch sẽ ko có lỗi nhưng khi chạy sẽ có những kết quả sai bét.
    - Muốn biết hàm LoadLibrary trả về kiểu gì thì bạn xem MSDN sẽ rõ ngay, cần gì phải ngồi phân biệt chi cho mất công. Code trên mạng ko phải lúc nào cũng đúng, có nhiều cái cũng dở hơi chết đi được. Cứ làm theo MSDN là luôn đúng.
    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. Lấy handle của nhiều control trên chương trình khác như thế nào ?
    Gửi bởi kid1412qt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 08-05-2012, 11:13 PM
  2. lấy handle của textbox khi đã biết handle của form
    Gửi bởi prt_awm trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 08-10-2011, 01:39 PM
  3. lấy handle của textbox khi đã biết handle của form
    Gửi bởi prt_awm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 30-09-2011, 09:56 PM
  4. Từ handle trong vc++ phải dịch như thế nào nhỉ?
    Gửi bởi nguyenbinh07 trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 11
    Bài viết cuối: 31-03-2009, 09:48 PM
  5. Tìm Handle của cửa sổ tắt máy trên Windows như thế nào?
    Gửi bởi haian trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 27
    Bài viết cuối: 18-01-2009, 05:40 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