Tôi đang viết một dự án ATL và tôi tự hỏi làm thế nào tôi nên tạo các lớp học ở đây. Ngay bây giờ tôi có một lớp được tạo bởi Thêm/Class/ATL đối tượng đơn giản. Tôi muốn chia nó thành các lớp nhỏ hơn nhưng phương pháp từ lớp này nên sử dụng CComPtr
và có CComPtr
làm đối số. Tôi không thể tạo lớp C++ đơn giản vì tôi không có CComPtr
ở đó.Tôi nên tạo các lớp học trong dự án ATL như thế nào?
Tôi có nên tạo các lớp ATL bằng ATL Simple Object Wizard và sau đó sử dụng giao diện cho lớp này để gọi các phương thức. Giống như ở đây:
CComPtr<ITestAtlClass> tptr;
tptr.CoCreateInstance(CLSID_TestAtlClass);
tptr->test();
Và tôi nên thêm tất cả các phương pháp công bằng Lớp Xem/ITestAtlClass/Add/Thêm Method? Còn về các nhà xây dựng thì sao? Tôi có phải khởi tạo lớp học của mình chỉ bằng các thuộc tính (và thêm chúng vào Chế độ xem Lớp học/ITestAtlClass/Add/Add Property)? Và vượt qua mọi đối tượng com bởi giao diện IUnknown?
Ai đó có thể cho tôi biết cách thực hiện trong dự án ATL. Tôi sẽ sử dụng lớp này nhỏ hơn trong nội bộ (không ai sẽ tạo ra các lớp này bên ngoài DLL của tôi) chỉ để làm cho mã của tôi dễ đọc hơn.
Chỉ tạo các lớp ATL cho các giao diện sẽ hiển thị bên ngoài DLL. –
@Hans Passant Nhưng tôi không thể tạo lớp C++ đơn giản đang sử dụng CComPtr chẳng hạn. Cách sử dụng? –