2009-08-24 12 views
7

Có khá nhiều câu hỏi liên quan đến bộ công cụ C++ GUI cho Windows, nhưng chúng chủ yếu áp dụng cho các phiên bản hệ điều hành máy tính để bàn.Chuyển từ MFC sang QT hoặc WTL (hoặc bộ công cụ GUI khác) có được đề xuất cho việc phát triển Windows CE không?

Tôi hiện đang bắt đầu dự án C++ cho thiết bị cầm tay VGA Windows CE 5.0 và suy nghĩ về thư viện GUI nào nên chọn. Tôi có một số kinh nghiệm sử dụng MFC trong các dự án Windows CE, nhưng có một số điểm yếu được biết đến của MFC được đề cập ở đây tại SO (ví dụ, các công nghệ khá lỗi thời được sử dụng, trừu tượng xấu, lạm dụng bộ tiền xử lý C++, v.v.). Đối với các dự án máy tính để bàn, họ đề xuất QT và WTL chủ yếu. Đồng thời MFC có một số đặc điểm vẫn còn đáng kể cho phát triển nhúng. Vì vậy, làm thế nào để bạn nghĩ rằng, nó là hợp lý để dành một số nguồn lực học tập bộ công cụ GUI mới để chuyển đổi từ MFC, và những gì bộ công cụ bạn sẽ giới thiệu trong trường hợp này? Hoặc MFC vẫn là đáng kể nhất cho sự phát triển nhúng của Windows CE?

Các đặc điểm quan trọng nhất của bộ công cụ là: CPU vừa và bộ nhớ, kích thước thời gian chạy nhỏ, thiết kế hướng đối tượng tốt, tuân thủ thực hành C++ hiện đại, đường cong học tập dốc, tốc độ phát triển, giao diện, gỡ lỗi và thiết kế tiện dụng công cụ.

(Điều cần thiết trong dự án:. Sê-ri truyền cảng, chủ đề, âm mưu và sơ đồ bản vẽ, ActiveSync thông tin liên lạc)

+1

Tôi nói với MFC nếu bạn biết. Qt và WTL là tốt đẹp, nhưng các khung công tác GUI, tất cả chúng đều rất khó. Và có sử dụng vĩ mô trong QT quá. – toto

+0

Heh, Qt không thực sự giúp bạn trong bộ phận "tiền xử lý C++ tiền xử lý". –

Trả lời

8

Chúng tôi có Qt 4.5 trên dự án Windows CE 5.0 ở giai đoạn hoàn thiện, vì vậy tôi cố gắng nói về lợi thế/bất lợi của phát triển Qt so với MFC.
Qt Điểm cộng:

  • đẹp OOP thiết kế
  • nguyên bản được hỗ trợ tín hiệu/khe trừu tượng cho phép phát triển nhanh chóng và dễ dàng hơn
  • Qt hỗ trợ nhiều tính năng khác nhau (GUI, hệ thống tập tin, mạng, luồng, vv)
  • Giấy phép LGPL cho phép phát triển ứng dụng thương mại miễn phí
  • Mở mã nguồn, ví dụ, tài liệu tuyệt vời giúp tạo đường cong học tập nhiều, nhiều bước
  • Thư viện đa nền tảng. Chúng tôi đã có thể chạy ứng dụng của chúng tôi trên thiết bị và máy tính để bàn với hệ điều hành Vista mà không gặp bất kỳ sự cố nào. Trong 4.6 phiên bản hỗ trợ Symbian đã được thêm vào

Qt nhược điểm:

binaries
  • Khá lớn (> 10 Mb cho Core và mô-đun với tất cả các tính năng "trên" Gui, nhưng bạn có thể tinh chỉnh xây dựng thư viện và làm libs nhỏ hơn)
  • Big bộ nhớ và CPU so với MFC

tôi nghĩ rằng, đó Ưu điểm chính của MFC so với Qt nó tối thiểu bộ nhớ và CPU dấu chân của nó. Nếu đây không phải là vấn đề - hãy chọn Qt.
P.S. Giao tiếp cổng Com và vẽ bản vẽ không được bao gồm trong Qt, nhưng các thư viện dựa trên LGPL Qt tồn tại, cung cấp cho bạn các tính năng như vậy (Ví dụ "Qwt" để vẽ đồ thị).

+0

"Giấy phép LGPL cho phép phát triển ứng dụng thương mại miễn phí" - có đúng không? Tôi thibk cho các ứng dụng thương mại, bạn nên mua một giấy phép đó là rất tốn kém. – Narek

+0

Không. Biến thể LGPL không có bất kỳ khoản phí nào, nhưng như LGPL nói, bạn nên chia sẻ bất kỳ thay đổi nào của mã thư viện Qt. Nếu bạn chọn biến thể thương mại, bạn có thể giữ các thay đổi được đóng lại. http://qt.nokia.com/products/licensing – cybevnm

1

Nếu bạn học QT, bạn sẽ được đặt cũng phải viết mã cho tất cả các khác (Linux) nền tảng đang được đẩy bởi các dòng của Nokia, Intel và Google. Điều đó tự nó làm cho nó trở thành công nghệ thích hợp nhất cho tôi!

Bạn có thể vẫn phải xem các thư viện khác về một số khía cạnh khác của mã, nhưng việc sử dụng QT cho GUI sẽ không bao giờ là một lựa chọn tồi.

+0

trừ khi bạn không muốn chia sẻ mã nguồn – ZeroCool

+0

Bạn không cần phải chia sẻ mã nguồn theo giấy phép thương mại QT. Giấy phép LGPL QT chỉ bắt buộc bạn chia sẻ các thay đổi đối với mã nguồn Qt. –

+0

Không chỉ nền tảng Linux, Symbian cũng vậy. – e8johan

2

Ưu điểm đầu tiên là QT là một lib đa nền tảng. Thứ hai, MFC là một nhức đầu. Những điều đơn giản nhất để làm với MFC có thể biến thành một vấn đề lớn . Vì vậy, hãy chuyển từ MFC sang QT càng sớm càng tốt.

2

Nếu bạn biết MFC sau đó gắn bó với nó: nó hoạt động tốt cho CE. Tất nhiên có một số hạn chế so với Desktop MFC, nhưng nói chung chúng không đáng kể. Tôi nghĩ rằng vấn đề chính chúng tôi đã tìm thấy là in ấn không được hỗ trợ trong MFC8 cho CE (VS2005).

Mặt khác, nếu bạn có một khung trống, tôi khuyên bạn nên sử dụng .NET - hoặc C# hoặc VB, tùy theo điều bạn cảm thấy thoải mái nhất.

+0

Nếu bạn không có các ràng buộc về bộ nhớ thì C# là TTM nhanh nhất của bạn. Rất dễ dàng cho hầu hết các ứng dụng nhúng nhưng khung nhỏ gọn là một bộ nhớ khổng lồ. Ngoài ra còn có một số thiếu sót rất khó chịu trong CF esp nếu bạn đến từ một nền C# -desktop. – EndsOfInvention

+0

@EndsOfInvention: đã đồng ý, đến từ môi trường .NET trên máy tính để bàn Compact Framework có nhiều mất tích hơn so với .NET đầy đủ so với MFC CE có liên quan đến Desktop MFC. – AAT