2009-11-07 86 views
2

到目前爲止,我一直只編寫控制檯應用程序,但我需要爲學校作業編寫一個簡單的窗口應用程序。如何在ANSI C中創建窗口應用程序?

有人可以指點我一個很好的教程如何在ANSI C中創建窗口和其他普通的Windows元素,如按鈕,二維圖等?有什麼好的圖書館我應該使用?

我試着用搜索引擎,但也有專門C.

如果可以,我也明白了一些示例代碼沒有教程網站。

謝謝。

順便說一下,我使用Dec C++。

+0

爲什麼您的問題標記爲C和C++。他們不是同一種語言! – 2009-11-07 22:27:19

+0

有人編輯它以包含C++標記。我已經糾正了這一點。 – asveikau 2009-11-07 22:29:57

回答

6

關於windows的ANSI C標準沒有任何內容。如果您想製作窗口應用程序,則必須使用特定於平臺的庫(例如,Win32,CocoaX11),或者某種跨平臺的庫來封裝該庫(例如,SDL,wxWidgets或更多) 。

+0

wxWidgets是一個非常好的庫 – Eloff 2009-11-07 22:07:33

+0

這只是無稽之談;語言標準和庫標準是獨立的東西,使用標準C庫以外的庫,不會生成結果代碼「不是ANSI C」。 「ANSI C」和「便攜性」不是同義詞。 – Clifford 2009-11-07 22:11:13

+0

@Clifford:對不起,我重新回答了我的答案。 – 2009-11-07 22:18:43

0

我建議您下載Microsoft Visual Studio 2008 Express Edition並使用C#.Net。

+0

雖然MSVS是一個很好的建議,但OP說這是一個學校作業,所以他可能不能使用C#。 – 2009-11-07 22:10:04

+5

這沒有任何意義。當問題清楚標記爲ANSI C時,如何在C語言中使用C#。在這個網站上已經有很多反C宣傳;我認爲我們不需要更多! – BobbyShaftoe 2009-11-07 23:03:19

-1

如前所述,我建議您使用Winforms並切換到.Net環境。這是2009年,我認爲有更合適的GUI解決方案:P

編輯:Nvm,沒有看到它是一個學校的任務。

然而,這裏是Win32 API的一個C++指南:http://www.relisoft.com/win32/index.htm

+4

典型的受管理的編碼器可能會嘲諷和挑戰他們的語言選擇。這是2009年,是的,顯然人們越來越愚蠢,因爲這個網站上的每個人似乎都害怕C.:P – asveikau 2009-11-07 22:23:11

+2

你爲什麼不告訴微軟。嘿嘿。如果有人想用C編寫GUI應用程序,那是他們的選擇。另外,C++不是ANSI C只是FYI。 – BobbyShaftoe 2009-11-07 23:05:17

+1

我從來沒有說過我害怕C/C++ ......也不認爲這是糟糕的選擇。我的文章僅僅闡明瞭對於OP而言可以更容易和更相關的方向。建議替代路徑沒有任何錯誤。 – 2009-11-07 23:16:19

2

http://support.microsoft.com/kb/829488其中也談到了如何創建

Windows應用程序:創建一個簡單的 基於Microsoft Windows的應用程序。 應用程序文件包含一個 ProjectName.cpp文件,其中包含一個 _tWinMain函數。您可以使用這種類型的應用程序來執行 基於圖形用戶界面(GUI)的編程。

至於教程...使用MSDN。 Win32 API C.您不需要「Win32 ANSI C教程」 - 您需要Win32教程(例如http://www.winprog.org/tutorial/start.html,http://www.functionx.com/win32/Lesson01.htm) - 當然,除非您不知道ANSI C,但是您只需查找ANSI C教程。這些主題是獨立的。

1

有很多很好的圖書館—太多了,因爲沒有開始宗教戰爭就有明顯的選擇。我建議你爲你的第一個庫學習一些可以在Windows,Linux或OSX上運行的東西。這裏有兩個不錯的選擇,不一定是最好的,但廣泛使用和個人的最愛:

  • Tcl/Tk。您可以使用Tcl腳本語言編寫大部分應用程序,但是您可以輕鬆地將自己的ANSI C代碼集成到Tcl中,Tcl從一開始就考慮到了這種集成。 Tk工具包非常易於學習,您可以在開始時使用純Tcl編寫許多簡單的GUI。互動,簡單,並得到很好的支持。

  • 如果你想用ANSI C編寫所有東西,我不知道有任何非常簡單的選擇,但是我對wxwidgets相當滿意。但是,所有這些工具都有相當陡峭的學習曲線。

7

GTK是一個很好用的庫,但可能會在Windows下提供非本機外觀。它在GNU/Linux下看起來很棒,特別是使用GNOME。

它在短短C語言實現(使用GObject的類型系統,glib庫的一部分),所以它會爲你的工作需要很大的。還有一個名爲Glade的RAD工具。

+0

GTK在任何窗口管理器下看起來都很棒,這是值得商榷的。 – rlbond 2009-11-07 22:28:46

+0

這是值得商榷的,但我認爲它不好。 – BobbyShaftoe 2009-11-07 23:06:37

2

常見的地方,開始是Charles Petzold's Programming WindowstheForger's Win32 API Programming Tutorial

但是在大多數情況下,C不再是Windows開發的首選語言。面向對象技術更適合於GUI開發,隨着MFC的引入,C++成爲首選語言,後來又以.Net,C#和C++/CLI的形式出現。

Win32 API可能很辛苦,MFC的許多功能都比Win32 API封裝好一點,但.Net框架是從頭開始設計的,並且不太受Win32 API怪獸的遺留影響,並且與它一起工作往往會帶來更高的生產力。

無論哪種方式,開發-C++是不是GUI開發一個偉大的工具。

+0

我知道這已經很多年了,但是C仍然是C++的一個子集?我一直試圖在Windows上開始使用C,並且我正在尋找合適的獨立編譯器。我遇到了不知道我是否需要C++的Windows編譯器和C或其他的編譯器的問題。微軟頁面之後,我一直在瀏覽微軟網頁。最近我得到的是Visual Studio Express。 – Ungeheuer 2017-07-07 06:15:54

+0

@Ungeheuer:我不確定您的_comment_與我的帖子或此主題有何關係。如果您有自己的問題,請發佈一個新問題。最後一個Visual Studio Express版本用於Visual Studio 2015,Visual Studio Community Edition功能更強大(允許插件),但更受限制地獲得許可(僅用於「小型」企業的商業用途)。 Visual Studio 217社區版是最新的。 Visual Studio的C和C++的Visual C++組件。如果源文件具有.c擴展名C而不是C++編譯將被使用(並且它們當然可以混合使用)。 – Clifford 2017-07-07 11:39:02

+0

@Unngeheuer:應用程序嚮導和模板用於C++,因此首先使用「空項目」模板並手動創建/添加文件。 – Clifford 2017-07-07 11:40:00

1

由於該語言的優勢在於其他地方,因此沒有多少簡單的C GUI庫。也許你應該考慮使用帶有C綁定的語言,這樣你仍然可以在C語言中進行數字處理,但是在GUI開發中使用少一些痛苦的東西?

如果你真的想堅持到C,您可以使用操作系統的本機API或當前唯一的跨平臺的C圖形用戶界面的lib我所知道的:GTK +。如果你真的不需要GUI而只是圖形輸出,那麼我會使用SDL。

相關問題