Visual C 程式設計經驗 上

2021-08-21 22:42:36 字數 3196 閱讀 6028

另一種改變視窗標題的方法

筆者在2023年9月1日出版的《計算機世界》上發表的名為《visual c++ 4.0程式設計經驗談》的文章中,提到過一種改變視窗標題的方法,即在應用程式的框架類cmainframe 類(注:它是cframewnd類的派生類) 的成員函式precreatewindow()中修改cframewnd類的成員變數m_strtitle的值。這種方法的不足之處就是只能一次性地設定視窗標題的內容,不能在程式執行過程中隨時修改它。比如當需要把滑鼠的當前座標在視窗標題上顯示時,我們就要使用到visual c++提供的全程函式 bool setwindowtext( hwnd hwnd, lpctstr lpstring )。這個函式實際上是乙個win32函式,其第乙個引數要求是乙個視窗框架的控制代碼,而第二個引數要求是乙個指向乙個常量字串的32位指標,即lpctstr型別的變數。通常情況下,我們往往會在應用程式的文件類或視類中動態改變視窗標題的內容,因而沒有現成的指向視窗框架的控制代碼供我們使用,因此我們還需要在使用setwindowtext()函式前先呼叫另乙個win32函式afxgetmainwnd(),來獲得乙個指向應用程式的框架類的指標,例如使用語句:

cwnd* m_pcwnd= afxgetmainwnd();

然後,再以如下形式呼叫setwindowtext()函式:

setwindowtext(*m_pcwnd, (lpctstr) m_windowtext);

// m_windowtext可以是乙個cstring類的變數

把多於256色的點陣圖作為資源加入到應用程式中

visual c++ 5.0以前版本中自帶的點陣圖編輯器不能瀏覽和編輯256色以上的點陣圖,並且資源檔案中也不允許嵌入(import)256色以上的點陣圖作為資源(否則,在應用程式執行時會報錯)。這一特性使我們用visual c++開發應用程式時不得不使用其他方法來增強介面圖畫的美觀性,於是就有使用visual c++開發應用程式核心、用visual basic開發介面的組合方法。在visual c++ 5.0中這個問題有了改善。首先,位圖編輯器可以建立並編輯256色的點陣圖。其次,visual c++ 5.0允許程式設計師把256色以上的點陣圖嵌入到資源中,但仍然無法在visual c++的點陣圖編輯器中瀏覽,並且還要求必須選擇win32 release作為編譯方式生成可執行的應用程式。另外乙個限制條件是作為資源的256色以上的點陣圖不能由應用程式核心自動開啟和關閉。比如說,在上述那篇名為《visual c++ 4.0程式設計經驗談》的文章中曾經提到過一種為對話方塊加入位圖式按鈕的方法,即由程式開發者為每個按鈕建立四幅位圖,分別用於表示按鈕的彈起狀態(up)、按下狀態(down)、輸入焦點狀態(focus)和禁止狀態(disable),並且必須以該按鈕的標題名與上述四種狀態之一的組合作為點陣圖的標識,以便應用程式在繪製位圖按鈕時,自動找到相應的資源(即位圖)。然而這一自動對映只限制於visual c++位圖編輯器能夠開啟的點陣圖。因此,如果選擇256色以上的點陣圖作為位圖按鈕的資源,並希望上述四狀態能夠相互切換的話,就必須用到下述函式和程式設計參考模型。

*s 設定四個常量:button_up、button_down、button_focus、button_disable,分別用於標識各按鈕的當前狀態。

*s 在應用程式的相應對話方塊類中為每個位圖按鈕(為下面敘述方便,不妨假設為兩個)設定乙個crect類的物件:m_rect1和m_rect2,來記載各按鈕在對話方塊中所佔據的座標矩形。再在該對話方塊類中為每個按鈕設定乙個整型變數:buton1_status和button2_status,記錄各按鈕的當前狀態。然後在對話方塊的建構函式中初始化這些crect類的物件和整型變數。

*s 在該對話方塊類中建立分別響應滑鼠各種狀態的訊息處理函式,如onmousemove()、onlbuttonup()、onlbuttondown()等。

*s 同時按下ctrl和w鍵或直接單擊工具條上的classwizard按鈕,開啟classwizard對話方塊。在類名(class name)列表框中選擇對話方塊類,在object ids列表框中選擇該類的類名,在訊息(messages)列表框中選擇wm_paint訊息並雙擊它,這時classwizard就會在該對話方塊類中加入乙個onpaint()函式。然後,再在object ids列表框中選擇新加入的工具條按鈕的標識名,雙擊訊息列表框中的command訊息,classwizard又會在對話方塊類中加入相應的訊息處理函式。關閉classwizard對話方塊。

編者注:源程式發表在

在應用程式中不載入選單、工具條和狀態條

1.開啟mainfrm.cpp檔案,使用工具條上的函式下拉列表框找到oncreate()函式。按照下述程式注釋掉建立工具條和狀態條部分的語句。

int cmainframe::oncreate(lpcreatestruct lpcreatestruct)

if (!m_wndstatusbar.create(this) ||!m_wndstatus bar.setindicators(indicators,sizeof(indicators)/sizeof(uint)))

// todo: remove this if you don't want tool tips or a resizeable *******

m_wnd*******.setbarstyle(m_wnd*******.getbarstyle() |cbrs_tooltips | cbrs_flyby | cbrs_size_dynamic);

// todo: delete these three lines if you don't want the ******* to be dockable

m_wnd*******.enabledocking(cbrs_align_any);

enabledocking(cbrs_align_any);

dockcontrolbar(&m_wnd*******);

//此處結束注釋

*/ return 0;

} 2.在mainfrm.cpp檔案中,使用工具條上的函式下拉列表框,找到precreatewindow()函式。把cs.style設定成如下形式,即不載入系統選單。

// create a window without min/max buttons,system menu, or sizable border

4. 找到visual c++編輯器的工具條上的編譯方式下拉列表框,選擇win32 release,生成release版本的應用程式。

至此,我們就得到了不含選單、工具條和狀態條結構的應用程式。(

Visual C 的選單程式設計

選單是軟體介面設計的乙個重要組成方面。它描述著乙個軟體的大致功能和風格。所以在程式設計中處理好 設計好選單,對於乙個軟體開發是否成功有著比較重要的意義。visual c 是.net框架中的乙個重要組成部分,也是微軟公司推出的下一代主流程式開發語言。它在設計 開發程式介面的時候和以前的某些程式開發語言...

Visual C 的Excel程式設計

excel是微軟公司辦公自動化套件中的乙個軟體,他主要是用來處理電子 excel以其功能強大,介面友好等受到了許多使用者的歡迎。在辦公的時候,正是由於excel的這麼多的優點,許多重要的資料,往往以excel電子 的形式儲存起來。這樣就給程式設計師帶來了乙個問題,雖然excel功能比較強大,但畢竟不...

Visual C 的SQL Server程式設計

visual c 的sql server程式設計 初始設定 首先,我們需在應用系統中安裝sql server 2000,microsoft ole db provider for sql server sql ole db 也會同時被自動安裝,接著用sql server的enterprise man...