VC 入門 步入VC 的殿堂

2021-09-22 09:46:25 字數 2290 閱讀 2757

有時候需要用vc++來做乙個小軟體,但是對於沒用過的我,只能從新學習!曾今有人說過:

視窗控制代碼

(hwnd

)來標示的,也就是說每乙個視窗都有乙個

視窗控制代碼,而且唯一,這個應該和分配記憶體有關的;當然

我們要對某個視窗進行操作,首先就要得到這個視窗的控制代碼。控制代碼(

handle

)是windows

程式中乙個重要的概念,使用也非常頻繁。在

windows

程式中,有各種各樣的資源(視窗、圖示、游標等),系統在建立這些資源時會為它們分配記憶體,並返回標識這些資源的標識號,即控制代碼。在後面的內容中我們還會看到圖示控制代碼(

hicon

)、游標控制代碼(

hcursor

)和畫刷控制代碼(

hbrush

)。訊息:這個名詞經常聽到,但是我還沒有真正認識和應用過這個都西!在c++中訊息時有msg結構表示:

1typedef

struct

tagmsg  msg;

第乙個成員變數

hwnd

表示訊息所屬的視窗。我們通常開發的程式都是視窗應用程式,

乙個訊息一般都是與某個視窗相關聯的。例如,在某個活動視窗中按下滑鼠左鍵,產生的按鍵訊息就是發給該視窗的。在windows程式中,用

hwnd

型別的變數來標識視窗。

第二個成員變數

message

指定了訊息的識別符號。在

windows

中,訊息是由乙個數值來表示的,不同的訊息對應不同的數值。但是由於數值不便於記憶,所以windows將訊息對應的數值定義為

wm_***

巨集(wm

是window message

的縮寫)的形式,

***對應某種訊息的英文拼寫的大寫形式。例如,滑鼠左鍵按下訊息是

wm_lbuttondown

,鍵盤按下訊息是wm_keydown,字元訊息是wm_char,等等。在程式中我們通常都是以wm_***巨集的形式來使用訊息的。 第

三、第四個成員變數wparam和lparam,用於指定訊息的附加資訊。例如,當我們收到乙個字元訊息的時候,message成員變數的值就是wm_char,但使用者到底輸入的是什麼字元,那麼就由wparam和lparam來說明。wparam、

lparam

表示的資訊隨訊息的不同而不同。

最後兩個變數分別表示訊息投遞到訊息佇列中的時間和滑鼠的當前位置。

訊息佇列:有訊息當然要排隊,應為cpu執行程式又先後順序的吧,不同的佇列執行的次序也是不同的!但是也不是所有訊息都要進去排隊,

windows

程式中的訊息可以分為「進隊訊息」和「不進隊訊息」。進隊的訊息將由系統放入到應用程式的訊息佇列中,然後由應用程式取出並傳送。不進隊的訊息在系統呼叫視窗過程時直接傳送給視窗。不管是進隊訊息還是不進隊訊息,最終都由系統呼叫視窗過程函式對訊息進行處理。

最後看一下,程式的入口函式作為我們這堂課的結束,因為要上班了!

1intwinapi winmain(23

hinstance hinstance,         

//handle to current instance45

hinstance hprevinstance, 

//handle to previous instance67

lpstr lpcmdline,              

//command line89

intncmdshow                  

//show state

1011);

第乙個引數hinstance表示該程式當前執行的例項的控制代碼,這是乙個數值。當程式在windows下執行時,它唯一標識執行中的例項(注意,只有執行中的程式例項,才有例項控制代碼)。乙個應用程式可以執行多個例項,每執行乙個例項,系統都會給該例項分配乙個控制代碼值,並通過hinstance引數傳遞給winmain函式。

第二個引數hprevinstance表示當前例項的前乙個例項的控制代碼。通過檢視msdn我們可以知道,在win32環境下,這個引數總是null,即在win32環境下,這個引數不再起作用。

第三個引數

lpcmdline

是乙個以空終止的字串,指定傳遞給應用程式的命令列引數。  

第四個引數ncmdshow指定程式的視窗應該如何顯示,例如最大化、最小化、隱藏等。這個引數的值由該程式的呼叫者所指定,應用程式通常不需要去理會這個引數的值。

學習是要乙個過程,但是我相信我有c#做我的靠山,對c++的學習是很有信心的,雖然不能一下子把它給啃了,慢慢努力!ok上班了,每天都去學學,在用用應該可以的哦!

VC除錯入門

概述 除錯是乙個程式設計師最基本的技能,其重要性甚至超過學習一門語言。不會除錯的程式設計師就意味著他即使會一門語言,卻不能編制出任何好的軟體。這裡我簡要的根據自己的經驗列出除錯中比較常用的技巧,希望對大家有用。本文約定,在選擇選單時,通過 表示分級選單,例如file open表示頂級選單file的子...

VC 除錯入門

vc除錯入門 設定斷點 可以通過下述方法設定乙個斷點。首先把游標移動到需要設定斷點的 行上,然後 去掉斷點 把游標移動到給定斷點所在的行,再次按f9就可以取消斷點。同前面所述,開啟breakpoints對話方塊後,也可以按照介面提示去掉斷點。條件斷點 可以為斷點設定乙個條件,這樣的斷點稱為條件斷點。...

VC除錯入門

概述 除錯是乙個程式設計師最基本的技能,其重要性甚至超過學習一門語言。不會除錯的程式設計師就意味著他即使會一門語言,卻不能編制出任何好的軟體。這裡我簡要的根據自己的經驗列出除錯中比較常用的技巧,希望對大家有用。本文約定,在選擇選單時,通過 表示分級選單,例如file open表示頂級選單file的子...