VC6 0中控制項及按鈕的設定和使用

2022-07-14 23:03:22 字數 3922 閱讀 8975

vc學習筆記1:按鈕的使能與禁止

用classwizard的member variables為按鈕定義變數,如:m_button1;

則m_button1.enablewindow(true); 使按鈕處於允許狀態

m_button1.enablewindow(false); 使按鈕被禁止,並變灰顯示

vc學習筆記2:控制項的隱藏與顯示

用cwnd類的函式bool showwindow(int ncmdshow)可以隱藏或顯示乙個控制項。

例1:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );     //獲取控制項指標,idc_edit為控制項id號

pwnd->showwindow( sw_hide );     //隱藏控制項

例2:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );     //獲取控制項指標,idc_edit為控制項id號

pwnd->showwindow( sw_show );     //顯示控制項

以上方法常用於動態生成控制項,雖說用控制項的create函式可以動態生成控制項,但這種控制項很不好控制,所以用隱藏、顯示方法不失為一種替代手段。

vc學習筆記3:改變控制項的大小和位置

用cwnd類的函式movewindow()或setwindowpos()可以改變控制項的大小和位置。

void movewindow(int x,int y,int nwidth,int nheight);

void movewindow(lpcrect lprect);

第一種用法需給出控制項新的座標和寬度、高度;

第二種用法給出存放位置的crect物件;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );     //獲取控制項指標,idc_edit1為控制項id號

pwnd->movewindow( crect(0,0,100,100) );     //在視窗左上角顯示乙個寬100、高100的編輯控制項

setwindowpos()函式使用更靈活,多用於只修改控制項位置而大小不變或只修改大小而位置不變的情況:

bool setwindowpos(const cwnd* pwndinsertafter,int x,int y,int cx,int cy,uint nflags);

第乙個引數我不會用,一般設為null;

x、y控制項位置;cx、cy控制項寬度和高度;

nflags常用取值:

swp_nozorder:忽略第乙個引數;

swp_nomove:忽略x、y,維持位置不變;

swp_nosize:忽略cx、cy,維持大小不變;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_button1 );     //獲取控制項指標,idc_button1為控制項id號

pwnd->setwindowpos( null,50,80,0,0,swp_nozorder | swp_nosize );     //把按鈕移到視窗的(50,80)處

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder | swp_nomove );     //把編輯控制項的大小設為(100,80),位置不變

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder );     //編輯控制項的大小和位置都改變

以上方法也適用於各種視窗。

vc學習筆記4:什麼時候設定視中控制項的初始尺寸?

我在cformview的視中加入了乙個編輯控制項,在執行時使它充滿客戶區,當視窗改變大小時它也跟著改變。

改變控制項尺寸可以放在ondraw()函式中,也可放在calcwindowrect()函式中,當視窗尺寸發生變化時,它們都將被執行,且calcwindowrect()函式先於ondraw()函式,下例是在calcwindowrect()函式中修改控制項尺寸。

過載view類的calcwindowrect函式,把設定控制項的尺寸的語句加入這個函式中。

例:void cmyeditview::calcwindowrect(lprect lpclientrect, uint nadjusttype) 

vc學習筆記5:單選按鈕控制項(ridio button)的使用

一、對單選按鈕進行分組:

每組的第乙個單選按鈕設定屬性:group,tabstop,auto;其餘按鈕設定屬性tabstop,auto。

如:ridio1、ridio2、ridio3為一組,ridio4、ridio5為一組

設定ridio1屬性:group,tabstop,auto

設定ridio2屬性:tabstop,auto

設定ridio3屬性:tabstop,auto

設定ridio4屬性:group,tabstop,auto

設定ridio5屬性:tabstop,auto

二、用classwizard為單選控制項定義變數,每組只能定義乙個。如:m_ridio1、m_ridio4。

三、用classwizard生成各單選按鈕的單擊訊息函式,並加入內容:

void cweditview::onradio1() 

void cweditview::onradio2() 

void cweditview::onradio3() 

void cweditview::onradio4() 

void cweditview::onradio5() 

四、設定預設按鈕:

在定義控制項變數時,classwizard在建構函式中會把變數初值設為-1,只需把它改為其它值即可。

如://}afx_data_init

vc學習筆記6:旋轉控制項(spin)的使用

當單擊旋轉控制項上的按鈕時,相應的編輯控制項值會增大或減小。其設定的一般步驟為:

一、在對話方塊中放入乙個spin控制項和乙個編輯控制項作為spin控制項的夥伴視窗,

設定spin控制項屬性:auto buddy、set buddy integer、arrow keys

設定文字控制項屬性:number

二、用classwizard為spin控制項定義變數m_spin,為編輯控制項定義變數m_edit,定義時注意要把m_edit設定為int型。

三、在對話方塊的oninitdialog()函式中加入語句:

bool cmydlg::oninitdialog() 

四、用classwizard為編輯控制項新增en_change訊息處理函式,再加入語句:

void cmydlg::onchangeedit1() 

ok!vc學習筆記7:程式結束時儲存檔案問題

對於可以接收資料的控制項,如編輯控制項來說,updatedata()函式至關重要。當控制項內容發生變化時,對應的控制項變數的值並沒有跟著變化,同樣,當控制項變數值變化時,控制項內容也不會跟著變。

updatedata()函式就是解決這個問題的。

updatedata(true);把控制項內容裝入控制項變數

updatedata(false);用控制項變數的值更新控制項

如:有編輯控制項idc_edit1,對應的變數為字串m_edit1,

1、修改變數值並顯示在控制項中:

m_edit1 = _t("結果為50");

updatedata(false);

2、讀取控制項的值到變數中:

用classwizard為idc_edit1新增en_change訊息處理函式,

void ceditview::onchangeedit1()

**:

vc6 0下的GDI 設定及精彩例項

2.在你將要使用gdi 的工程中,完成初始化工作 在stdafx.h中加入 define ulong ptr unsigned long include using namespace gdiplus include gdiplus.h ulong ptr m gdiplustoken 須以成員變數...

如何在VC6 0中設定條件斷點

朱金燦 在平時使用程式設計中我們除錯程式一般都要設定斷點進行除錯。但是設定一般的斷點難以除錯一些迴圈次數比較大的 從網上看到一篇文章 vc除錯入門 再結合自己的實踐,懂得了如何設定條件斷點。下面我以例子來說明 在下面一段 中 int sum 0 for int i 0 i 10 i 現在我要獲取當i...

如何在VC6 0中設定條件斷點

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!朱金燦 在平時使用程式設計中我們除錯程式一般都要設定斷點進行除錯。但是設定一般的斷點難以除錯一些迴圈次數比較大的 從網上看到一篇文章 vc除錯入門 再結合自己的實踐,懂得了如何設定條件斷點。下面我以例子來說明 在下面一段 中 選擇condition...