2009-02-28 37 views
9

Tôi muốn học lập trình C++ GUI bằng Visual Studio 2008. Tôi không chắc chắn nên bắt đầu từ đâu. Tôi đã học C++ ở trường trung học, nhưng không phải là GUI. Tôi đã làm C# trong khoảng 3 năm nay và đó là cách tôi "học" lập trình GUI. Bây giờ tôi muốn học cách viết GUI mà không cần sử dụng .NET framework, vậy tôi bắt đầu từ đâu?Windows GUI Lập trình C++

Trả lời

7

MFC gần như đã lỗi thời. Tôi khuyên bạn nên sử dụng WTL thay thế.

Cũng không phải là ý tưởng hay khi bắt đầu lập trình cho GUI trong C++ khi có rất nhiều khung công tác tốt có sẵn như khung nền tảng QT chéo.

8

"Lập trình Windows 5th Edition" của Charles Petzold là Kinh Thánh cho lập trình Windows.

http://www.charlespetzold.com/pw5/

+1

Kinh Thánh! Đọc sách của Petzold là không chỉ để phát triển bằng cách sử dụng trực tiếp API Win32 (trong đó có ưu và khuyết điểm của nó - tôi thích nó để sử dụng MFC, mặc dù) mà còn để hiểu cách Windows hoạt động bên dưới mui xe. –

8

Vì bạn nói rằng bạn đã làm C# GUI lập trình trong khoảng 3 năm, tôi sẽ giả định rằng có nghĩa là Windows Forms. Một cách để nhúng ngón chân của bạn trong nước là hãy nhớ rằng WinForms thực sự chỉ là một wrapper hướng đối tượng xung quanh user32. Vì vậy, tải lên Reflector và hãy xem cách một số các điều khiển được thực hiện. Bạn sẽ thấy rằng những thông điệp lạ như WM_PAINTWM_KEYDOWN được bơm đến WndProc các điều khiển khác nhau của Windows. Trong lập trình Win32 hoặc MFC cũ, điều tương tự vẫn đang diễn ra. Làm điều này sẽ cho phép bạn từ từ bóc vỏ các loại hành tây; bạn cũng sẽ cảm thấy tốt hơn về cách Windows Forms hoạt động. Từ đó, tôi khuyên bạn nên chọn Programming Windows bởi Petzold; nó cũ, nhưng các API gốc trong Windows không di chuyển xung quanh mà nhiều hơn. Chúc vui vẻ!

2

Bạn có được phép viết GUI trong VC++ bằng Microsoft Foundation Classes hoặc MFC không? Đó là cách tôi đã và đã viết VC++ GUIs trong quá khứ.

Đã có nhiều sách được viết trên MFC trong những năm qua. Tôi chắc chắn rằng một trong số họ sẽ làm rất tốt. Bạn có thể tìm thấy trong tài liệu tham chiếu ATL là một sự lặp lại của Microsoft trên STL. MFC và ATL loại sáp nhập trong những năm qua vì vậy bất cứ điều gì ATL cũng được áp dụng cho một ứng dụng MFC những ngày này.

Chúc may mắn và vui chơi!

+0

Tôi đã suy nghĩ về việc học MFC – Kredns

+0

IMHO, nó chắc chắn là con đường để đi. – Glenn

5

Một số ý kiến ​​dị giáo ...

tôi sẽ không khuyên bạn nên C++ để viết của Windows GUI phức tạp - ngôn ngữ/thư viện combo như C# hoặc Delphi rất nhiều hiệu quả. Nếu bạn muốn tham gia lập trình C++, tôi khuyên bạn nên sử dụng nó để viết một máy chủ đa luồng của một số loại - một máy chủ Web đơn giản sẽ làm cho người mới bắt đầu.

Và nếu bạn thực sự muốn hiểu các API Windows cơ bản, tôi nghĩ có một điều gì đó để viết một ứng dụng đơn giản (ví dụ, một phiên bản đơn giản của sổ ghi chép) trong C (không phải C++). Bạn sẽ chỉ muốn làm điều đó một lần, nhưng bạn sẽ học được rất nhiều trong quá trình này.

Và trước khi bất kỳ ai bắt đầu điên rồ xuống bỏ phiếu, hãy để tôi nói rằng tôi là một lập trình viên C++ trên 20 năm, và thực sự yêu thích ngôn ngữ.

+1

Không, tôi hoàn toàn đồng ý. Đó là giá trị nó cho "OH - vì vậy R'SNG làm thế nào nó hoạt động" và cho "OH - do đó, đó là lý do tại sao đã có một hàm bao bajillion cho nó" và cho "OH - vì vậy đó là lý do tại sao chúng tôi không làm điều đó theo cách đó nữa. " =) –

2

Ah Tôi biết bạn cảm thấy thế nào, người lập trình ngôn ngữ phiên dịch cũ muốn biết sự kỳ diệu đằng sau lập trình được biên dịch. Vâng, tôi không thể tìm thấy hướng dẫn mà tôi đã sử dụng để học lập trình Windows, nhưng chỉ biết rằng có hướng dẫn win32 tốt xung quanh, vì vậy bạn không lãng phí thời gian của bạn mua một cuốn sách chỉ được nêu ra. Tôi đã tìm thấy: http://www.relisoft.com/win32/index.htm Hướng dẫn gọn gàng nhất, tin tưởng tôi.

0

Hiện tại (Windows 8), WinRT, một API hoàn toàn mới đã được Microsoft giới thiệu và tôi rất vui mừng về nó. Không bao giờ làm MFC lập trình, nhưng thấy một số mẫu mã và họ nhìn lạ 90's C-style (hiện đại C-style thường tốt hơn!). Vì vậy, mà không bắt đầu trực tiếp với MFC, tôi nghĩ tôi sẽ bắt đầu với WinRT

:)

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