-
09-08-2015, 07:33 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Help về doubleclick item trong listbox sử dụng sendMessage
Dear các Pro.
Tôi có 2 app chạy song song(App1, App2).
App1: Có 1listbox với 1list item: TEXT1, TEXT2, TEXT3.......TEXTn. Sử dụng thuộc tính double click.
App2: Run App2 thì sẽ auto double click vào 1item bất ký trong listbox của App1.
Tôi đang dùng sendMessage nhưng chưa biết cách sử dụng như thế nào. Mong các pro help me.View more random threads:
- Giảm thời gian chậm trễ khi sử dụng WH_KEYBORAD_LL??
- Cách thực hiện hook để viết tiếng Việt?
- Áp Dụng Mô Hình Hướng đối tượng vào Hàm CallBack,Hook ... ?
- Phân biệt _cdecl và _stdcal
- Kỹ thuật hook Console Application của madCHook?
- tạo một cửa sổ ứng dụng nhưng bị lổi ?
- sự tương tác giữa MFC và API
- Chờ lệnh cho phép từ chương trình chính trong hàm FakeCreateProcess
- Làm sao để mix audio data được truyền qua mô hình Client-Server ?
- Windows Message nào thay đổi định dạng của ký tự (in đậm, in nghiêng, gạch dưới...)?
-
10-08-2015, 10:07 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chào bạn trsa. Theo như bạn trình bày thì mình thấy có thể dùng SendMessage (hay PostMessage) để mô phỏng phần nào đó cho giống thôi, cách tốt hơn là bạn sử dụng SendInput sẽ ít bị va chạm hơn. Ở đây mình vẫn bàn về SendMessage.
1. Từ App2, bạn tìm thẻ của cửa sổ chính chứa listbox của App1, giả sử bạn thiết kế tiêu đề cửa sổ chính App1 là "App1" : HWND hParentFind = FindWindow(NULL, "App1");
2. Tìm thẻ cửa sổ listbox của App1 : HWND hListFind = FindWindowEx(hParentFind, NULL, "listbox", "");
3. Tìm định danh của listbox của App1 : int idList = GetDlgCtrlID(hListFind);
4. Đếm số item hiện có trong listbox : int cCount = SendMessage(hListFind, LB_GETCOUNT, 0, 0);
5. Bôi đen một chỉ mục item bất kỳ cho giống như thực (có thể khởi tạo ngẫu nhiên srand trước) : SendMessage(hListFind, LB_SETCURSEL, rand() % cCount, 0);
6. Gởi thông điệp mô phỏng tới cửa sổ chính của App1 : SendMessage(hParentFind, WM_COMMAND, MAKEWPARAM(idList, LBN_DBLCLK), (LPARAM)hListFind);
Nếu trong App1 có nhiều listbox, thì khi thiết kế nên đặt các tên cho từng cái, bạn yên tâm rằng caption của listbox vẫn không hiển thị và khi tìm cửa sổ có thể đưa Caption vào tham số cuối.
Một ý cuối là trong các tình huống ntn, bạn nên dùng PostMessage khi bạn bắt đầu phát triển chương trình lên. Send thì gởi và đợi hồi âm Post thì không.
-
10-08-2015, 03:55 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thanks bác MHoang
6. Gởi thông điệp mô phỏng tới cửa sổ chính của App1 : SendMessage(hParentFind, WM_COMMAND, MAKEWPARAM(idList, LBN_DBLCLK), (LPARAM)hListFind);
Đã thử dùng cả PostMessage và SendMessage.
-
11-08-2015, 11:54 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
_ Bạn thử xem lại Caption của cửa sổ của App1 có phải là "App1" không. Nếu bạn xây dựng giao diện trên cửa sổ ( không hộp thoại) thì bạn phải đưa tên lớp vào tham số đầu tiên FindWindow.
_ Bạn kiểm tra lại xem listbox của App1 có thuộc tính Notyfy không. Phải có thuộc tính này thì mới có thể nhận LBN_DBLCLK.
_ Bạn xem thử App1 đã có các item trên listbox chưa : tức là phải kiểm tra cCount phải khác LB_ERR và cCount phải > 0 thì mới tiếp tục 5 và 6.
Nếu vẫn chưa được thì bạn cho biết bạn dùng IDE nào để viết mã.
Bên dưới là 2 dự án nhỏ để bạn tham khảo. Mã của App2 vẫn sử dụng SendMessage nhưng cả 2 App đều đặt trên hộp thoại. Trong App2 khi bạn nhấn OK, thì App1 sẽ xuất ra hộp thông báo với lời chào "Hey!!!". Bất lợi ở đây là khi hộp thông báo còn xuất hiện thì App2 còn bị tê liệt, nếu thay SendMessage trong bước 6 bằng PostMessage thì sẽ tránh được điều này.
-
11-08-2015, 04:58 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
_ Bạn kiểm tra lại xem listbox của App1 có thuộc tính Notyfy không. Phải có thuộc tính này thì mới có thể nhận LBN_DBLCLK.
Thanks bác MHoang rất nhiều.
Hướng dẫn vui nhộn về phương tiện nong lỗ đít Thuốc giãn hậu môn nghe có vẻ đáng sợ, nhưng đừng sợ! Hướng dẫn này sẽ đưa bạn qua hành trình hích khi dùng dụng cụ làm giãn lỗ đít, khiến nó trở...
Hướng dẫn vui nhộn về sản phẩm làm...