在C 新手區回答乙個問題

2021-09-30 07:30:27 字數 1849 閱讀 6844

傳送門:

樓主問題:我知道的語言 易語言 vb delphi 的介面 都直接畫的 程式提供了足夠多的元件/控制項 供你使用  

阿海答:

曾經疑惑過,講講我的看法:

(1)從「程式」開始

什麼是「程式」,忘了是哪本書說的「程式」是命令的集合!

我們對計算機發出命令是為了解決問題,但是有的時候乙個問題並不是通過乙個兩個命令就能夠解決的,另外,一些問題的存在是重複的,需要我們不斷地發出同樣的命令,基於這樣的需要與情況,於是我們便想到了把命令「打包」起來,做成程式,這樣,當問題再度出現時,我們只要簡單的發出乙個「執行」程式的命令就可以輕鬆地解決問題了。

不管是dos下的經常出現命令列式程式,還是windows下的主流的視窗程式,都是一樣是為了解決問題,我們之所以更多的選擇視窗程式,是因為視窗程式對於普通人來說更容易讓他們理解程式的使用,能讓他們更容易的解決問題——我們的目標是解決問題。

(2)「介面」之惑or「視窗」之惑

有的程式是沒有介面的,它可以存在於系統的後台默默地幹自己的事情,從不現出身影,而我們經常用到的「看得見」的程式就總有介面。在這裡必須區分兩個概念:介面、窗體。像dos那樣黑乎乎的命令列難道不是介面,如果我們這麼定義「介面」——以圖形和文字的方式向使用者提供資訊——的話,我們會發現,dos那可愛的身影同樣也在向我們傳遞資訊,不過在與「視窗」的比較之下,他顯得有些難以理解罷了。而「視窗」當然屬於介面中的一種,它同樣在以圖形和文字的方式向使用者提供資訊。

理解「視窗」是屬於「介面」中的一種後,我們可以如此重述樓主的問題:c、c++下如何「弄」視窗?

(3)「微軟」——不舉的windows

為什麼我要在標題裡強調微軟「不舉」呢,這絕不是對微軟帶有蔑視,而是微軟在某些方面實在不舉啊!樓主提到易語言,vb,delphi的介面都是直接畫,非常方便就可以寫出乙個程式來,那麼樓主有沒有想過,為什麼這些工具會被製造出來使用呢?首先當然要有「容易編寫程式」這樣乙個需求存在,這樣一種需求在另外乙個角度上說明了,微軟的windows下要寫乙個「視窗」不是那麼容易。

程式設計就好像玩積木,都是要把廠家生產的積木做成各種樣子。廠家提供的積木形狀在很大程度上決定了我們的創造力。windows下的程式設計其實就是使用微軟提供的windowsapi(windows應用程式介面)這些積木湊成乙個個程式,但無奈的是微軟提供的windowsapi實在是又多又雜,想湊成乙個程式都十分麻煩。

於是便有人想:「為何不把微軟提供的這些windowsapi想象成是乙個個簡單的命令呢,而我們可以把這些命令再打包成乙個個「程式」,來解決那些總是重複出現的問題。」

基於這樣的想法,一些程式設計師便把微軟的windowsapi打包成乙個個庫類,樓主想想易語言裡面的模組,vb裡控制項,delphi裡的元件……可以這麼說,為了解決「程式設計」這個問題,我們把很多windowsapi「命令」打包成「程式」。

似乎離題了,不!

上面的話中我已經提到了編寫「視窗」的方法(對任何語言而言,不僅僅是c、c++),最直接的方法是呼叫「不舉」的windowsapi,比較方便的是用別人將windowsapi打包好後形成的「控制項」——用控制項這個詞或許樓主比較好理解!

那麼對c、c++而言,具體可以怎麼做呢?

如果要直接用api的話,情參考這篇文章: 或者搜尋關鍵字「windows sdk」。

如果要使用寫「控制項」的話,可以搜尋關於qt,或是wxwidget。

個人推薦的乙份比較好的教材是第二學堂的c++教程:

可惜那個老師寫到後面基本停了。

(4)最後

不管樓主選擇windowssdk還是用某乙個gui庫,都希望樓主能明白,程式設計是基於一定的基礎(積木)去解決問題。乙個簡單語句是一塊積木,乙個函式也是一塊積木,打包簡單語句就成了函式,打包函式就成了程式,程式就不可以再打包了嗎?或者說函式就一定要打包成程式,不能打包成其他嗎?程式設計是一件很實際的事,不管黑貓白貓,能抓住老鼠的就是好貓!

我在百度上回答的乙個關於類的問題

首先宣告是很簡單的乙個問題,就是關於類的基本問題。只是我覺得有點經驗就應當趕緊積累記錄一下。以下是乙個學生類 student 的類定義部分,請完成相應的類的實現部分,並編寫相應的main函式測試相應的功 離問題結束還有 14 天 21 小時 includeclass student 下面是我的回答 ...

我在百度上回答的乙個關於類的問題

首先宣告是很簡單的乙個問題,就是關於類的基本問題。只是我覺得有點經驗就應當趕緊積累記錄一下。以下是乙個學生類 student 的類定義部分,請完成相應的類的實現部分,並編寫相應的main函式測試相應的功 離問題結束還有 14 天 21 小時 includeclass student 下面是我的回答 ...

我在百度上回答的乙個關於類的問題

首先宣告是很簡單的乙個問題,就是關於類的基本問題。只是我覺得有點經驗就應當趕緊積累記錄一下。以下是乙個學生類 student 的類定義部分,請完成相應的類的實現部分,並編寫相應的main函式測試相應的功 離問題結束還有 14 天 21 小時 includeclass student 下面是我的回答 ...