2010-02-10 29 views
6

Tôi đã tự hỏi là có một thay thế Microsoft cho MFC, ngoại trừ WinForms trong lập trình GUI cho hệ điều hành Windows?GUI Framework/Lib cho C++ trong Windows

Tôi không muốn sử dụng thư viện của bên thứ ba (Borland/Qt/wxWindows). WinForms yêu cầu .NET là vấn đề chính (không thể cài đặt .NET trong các máy đích) và MFC gây chấn thương cho tôi ...

Bất kỳ giải pháp thay thế nào gần với Qt nhưng Microsoft có thương hiệu?

Tôi sẽ đánh giá cao bất kỳ đề xuất nào!

+4

Tôi tò mò, tại sao bạn lại quan tâm đến việc sử dụng thứ gì đó có thương hiệu MS? Hầu hết những người tôi biết sẽ yêu cầu đối diện chính xác ... – Manuel

+0

Có lý do kỹ thuật nào mà bạn không muốn sử dụng các thư viện không phải là MS hay không? –

+0

Yêu cầu của khách hàng rằng tất cả * phải * là MS ... – CombineSlave

Trả lời

10

Hãy thử WTL. Thư viện này ban đầu được tạo bởi Microsoft và sau đó là mã nguồn mở. Trái lại với MFC, nhiều nhà phát triển báo cáo kinh nghiệm tốt với nó. Nó xây dựng các tập tin thực thi nhẹ hơn, nó được cấu trúc tốt hơn so với MFC, nhưng cũng không quá giàu tính năng.

2

Tôi không nghĩ là có. Bạn có thể sử dụng WinAPI thuần túy, ATL, WTL (trong trường hợp này là may mắn!).

Tại sao bạn không muốn sử dụng Qt? Nguồn mở, miễn phí và công cụ rất linh hoạt của nó.

+0

Lý do - yêu cầu của khách hàng đối với công nghệ/libs và tài nguyên MS chỉ – CombineSlave

0

Không có bất kỳ. Đừng lãng phí thời gian của bạn để tìm kiếm.

+0

Liên kết tải xuống WTL từ máy chủ MS: http://www.microsoft.com/ Tải xuống/chi tiết.aspx? FamilyID = 48cb01d7-112e-46c2-bb6e-5bb2fe20e626 & displaylang = vi (BTW không phải tôi đã downvoted bạn) – Manuel

+1

Tôi nghĩ đây là phản hồi tốt - thực sự không có thư viện MS nào ngoài MFC mà sẽ là "gần với Qt". WTL là tuyệt vời, nhưng nó không phải là một khung ứng dụng như Qt hoặc MFC. –

+0

Tôi đồng ý - WTL không phải là một khung ứng dụng và việc thiếu tài liệu phong nha làm cho đường cong học tập rất dốc. – Rob

0

Bất kỳ sự thay thế đó sẽ được gần gũi với Qt nhưng Microsoft có thương hiệu

Nếu do "gần Qt" bạn có ý nghĩa tương tự trong thiết kế để Qt, sau đó không - không có. Tôi sử dụng WTL và thích nó, nhưng nó rất khác với Qt.

1

Mặc dù tôi thích nó và đã sử dụng nó rộng rãi, WTL là một nỗ lực rất lớn để tìm hiểu vì tài liệu không phải là tuyệt vời. Có một số bài viết 'WTL for MFC Programmers' tuyệt vời về Dự án mã hoàn toàn phải đọc.

Tuy nhiên, nếu bạn muốn một cái gì đó giống như Qt từ MS, thì bạn chỉ còn lại với MFC tôi sợ. OK, nó dài trong răng nhưng với sự bổ sung của VS2008 SP1 MFC Feature Pack, bạn có thể tạo các ứng dụng giống như Office 2007 hoàn chỉnh với băng. Đây có thể là giải pháp tốt nhất của bạn nếu chỉ công nghệ MS non-.NET được cho phép.

+1

thật không may, một số lớp mfc nhất định sử dụng .net .. * sighs * – johnathon

15

Tôi cũng đề xuất WTL. Dưới đây là danh sách có một số liên kết WTL hữu ích:

  • MSDN's ATL 3.0 Window Classes: An Introduction - về cơ bản.
  • Bài viết WTL của Chris Sells, Dharma Shukla và Nenad Stefanovic part1part2. Nenad Stefanovic là cha của WTL.
  • Bjarke Viksoe's WTL projects. Bjarne đã tổng hợp nhiều dự án nhỏ của mình thành một ứng dụng toàn bộ, một IDE - BVRDE.
  • Dự án mã số WTL page. Xem ra đặc biệt là các bài viết được viết bởi Michael Dunn. VMware Workstation sử dụng WTL và Michael Dunn làm việc cho VMware.
  • Hướng dẫn dành cho nhà phát triển WTL của Clipcode (doc, pdf, source code).

WTL ứng dụng mã nguồn mở, mà người ta có thể nghiên cứu để xem thủ đoạn thực hiện khác nhau:

  • Chromium của Google, mã nguồn here. Phiên bản windows sử dụng WTL. Tôi không biết liệu có ai đó đã cố gắng trích xuất khung công tác WTL từ Chromium hay không.
  • Programmer's Notepad sử dụng WTL, mã nguồn here.
  • InfraRecorder sử dụng WTL, mã nguồn here.
+1

+1 cho rất nhiều thông tin về đề xuất của bạn, OP nên đánh dấu câu trả lời, vì câu hỏi là cũ. Có vẻ như OP đã chán nản và quên mất điều này là SO. – johnathon

0

Bạn luôn có thể sử dụng API Windows trực tiếp và bỏ qua MFC.

+0

Ewwww. Chúng tôi có một chương trình ở đây sử dụng API Win32 thẳng và tôi là người duy trì chính. Tôi muốn biết những gì các nhà thiết kế API đã hút thuốc, và nơi tôi có thể nhận được một số. –

+0

@DavidThornley Các nhà thiết kế api đã không hút thuốc bất cứ điều gì. Cách duy nhất cho hai thành phần với ABI khác nhau để nói chuyện với nhau theo cách KHÔNG được quản lý (có 2) là giao diện C phẳng (hay còn gọi là cửa sổ api) và COM <~ yea .. mà không tồn tại khi api là tạo. Và xem xét tất cả những gì phụ thuộc vào api (MFC, ATL, Và mỗi ứng dụng đơn lẻ/khung bạn có thể nghĩ đến) họ không quá quan tâm đến việc phá vỡ thế giới bằng cách thay đổi nó. Mà, tất nhiên, họ nên. – johnathon

+0

@johnathon: Tôi hiểu tại sao họ cần phải giữ nó theo cách đó, một khi được phát hành lần đầu tiên. Tuy nhiên, tôi đã nhìn thấy giao diện C phẳng tốt trước đây, và điều đó đã không nhìn để đủ điều kiện cho tôi. –

-1

Tôi không hiểu. Nếu nó không phải là Win32 hoặc MFC hoặc Windows.Forms, thì những gì bạn đang tìm kiếm là do bên thứ ba định nghĩa.

Tất cả những người này đề xuất WTL đề xuất bạn tải xuống một số bộ công cụ của dự án bên thứ ba và sử dụng nó. Đó là tốt, nếu đó là những gì bạn đang tìm kiếm. Nhưng nếu bạn làm vậy, tôi khuyên bạn nên xem Qt hoặc wxWidget. Cái cũ cho tập hợp đầy đủ tính năng nhất mà bạn có thể nhận được và thứ hai để vẽ các tiện ích gốc bằng cách sử dụng API "sane nhiều hơn".

Ngoài ra: WTL có thể được tải xuống từ máy chủ MS, nhưng nó ở xa, xa so với công nghệ do MS hỗ trợ. Đây là một tiện ích không được hỗ trợ.

+1

Tuy nhiên, WTL có thể được trình bày cho khách hàng của mình như là một "công nghệ MS". Nó ban đầu được phát triển bởi MS, và đang được sử dụng trong MS, cũng như Google, VMWare và các công ty phần mềm lớn khác. –

+0

Điều đó thực sự không chính xác. Nó được phát triển bởi Nenad Stefanovic, một nhân viên của Microsoft vào thời điểm đó. Nó không bao giờ là một "công nghệ của Microsoft". Mọi người thường giả định rằng nếu một cái gì đó được phát hành bởi một nhóm MS trên MS Servers thì điều đó có nghĩa rằng nó là một công nghệ hỗ trợ MS chính thức. Nó không phải là. Và ở nhiều công ty mà chỉ tính MS, sự khác biệt là một điều rất quan trọng. – Shaun

+4

Tôi không nói nó được hỗ trợ bởi MS, nhưng nó đã được ceirtanly không phải là một dự án thời gian miễn phí của Nenad, nhưng một sản phẩm của Microsoft. Nó được phát hành lần đầu tiên như là một phần của SDK của Microsoft, và chính Microsoft đã phát hành nó theo một giấy phép nguồn mở (được tạo ra bởi các luật sư của Microsoft). –

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