2012-05-25 35 views
5

Thậm chí có thể tạo lớp GUI trong C# và phần còn lại của ứng dụng trong C++ không? Nếu tôi không sai một phần mềm antyvirus có GUI được thực hiện trong Delphi. Làm thế nào nó có thể được thực hiện?Có thể không? GUI trong C#, ứng dụng trong C++

+1

Vì lý do gì? –

+0

Có, Visual studio được viết bằng C++ với giao diện người dùng WPF. –

Trả lời

4

Bạn có nhiều lựa chọn để thực hiện nó, bao gồm:

  1. Sử dụng P/Invoke gọi vào ++ DLL C từ C#.
  2. Hiển thị giao diện COM từ mã gốc và gọi nó từ C# bằng cách sử dụng COM interop.
  3. Viết một dịch vụ Windows gốc và gọi nó từ mã được quản lý.
  4. Sử dụng C++/CLI để viết thư viện được quản lý bằng C++, mà bạn có thể dễ dàng liên kết đến từ C#.

Nếu bạn bắt đầu từ đầu, tùy chọn 4 có lẽ là lựa chọn tốt nhất của bạn. (Ngoài việc chỉ viết toàn bộ nội dung trong C#, tức là.) Ba tùy chọn đầu tiên liên quan đến một số tranh cãi và chi phí, và có lẽ không đáng lo ngại nếu bạn không có lý do thuyết phục như cần phải tương tác với một thư viện gốc hiện có hoặc cần một số kiến ​​trúc hướng dịch vụ.

3

viết logic ứng dụng trong c + + dll, sau đó sử dụng pinvoke từ C# để nói chuyện với dll.

+0

Vấn đề với điều này là rất khó để sử dụng nhiều hơn một api c-style với nền tảng gọi. Bạn phải đối phó với các tên hàm bị xáo trộn và sau đó bạn vẫn phải đối phó với mã hướng đối tượng differntly. Một wrapper com có ​​lẽ sẽ là một đặt cược tốt hơn. Tất nhiên, bạn luôn có thể quấn mã hướng đối tượng vào api kiểu C. –

+0

@JonathanHenson bạn là đúng. Quan sát tốt. –

4

Nếu bạn viết logic nghiệp vụ của mình trong C++/CLI và giao diện người dùng của bạn trong C#, thì đó không phải là vấn đề. Nếu bạn muốn viết trong ANSI C++ tinh khiết, bạn có thể phải viết trình bao bọc C++/CLI xung quanh các đối tượng mà bạn muốn hiển thị cho C#.

1

Xem this answer. Có vẻ như để trả lời vấn đề của bạn

Các vấn đề liên quan