小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VC常用小技巧--讓窗口一啟動就最大化

 修心殿 2011-04-25
VC常用小技巧--讓窗口一啟動就最大化
2008-04-11 08:41

摘自:http://blog.csdn.net/MasterFT/archive/2007/05/15/1609608.aspx

窗口

讓窗口一啟動就最大化
把應(yīng)用程序類(CxxxApp)的 InitInstance() 函數(shù)中的
m_pMainWnd->ShowWindow(SW_SHOW);
改為
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
則窗口一啟動就最大化顯示。

如何設(shè)置窗口的初始尺寸
在將應(yīng)用程序類(CxxAPP)的 InitInstance() 函數(shù)中加入:
m_pMainWnd->SetWindowPos(NULL,x,y,Width,Height,SWP_NOMOVE);
Width
為窗口寬度,Height為窗口高度
SWP_NOMOVE
表示忽略位置(x,y)
如:

讓窗口居中顯示
以下兩種方法可任選其一:
在應(yīng)用程序類(CxxxApp)的 InitInstance() 函數(shù)中加入:
在主框架類(MainFrm.cpp)OnCreate()函數(shù)中加入:
CenterWindow( GetDesktopWindow() );
如:如何修改窗口標(biāo)題
窗口標(biāo)題一般形式為:文檔標(biāo)題 - 程序標(biāo)題
1
、設(shè)置文檔標(biāo)題:
在文檔類(CxxxDoc)OnNewDocument()函數(shù)中加入語句:SetTitle("文檔名");
如:TextEditorDoc.cpp
可刪除Debug文件夾和Release文件夾;
原則上還可刪除主文件夾中所有圖標(biāo)為 的文件,包括.aps、.ncb.opt.plg等文件,它們都能在編譯時重建。但一般.clw不要刪除,它可能導(dǎo)致ClassWizard不好用。



控件
如何隱藏和顯示控件
CWnd類的函數(shù)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 ); //
顯示控件

按鈕的使能與禁止
ClassWizardMember Variables為按鈕定義變量,如:m_Button1

m_Button1.EnableWindow(true);
使按鈕處于允許狀態(tài)
m_Button1.EnableWindow(false);
使按鈕被禁止,并變灰顯示

改變控件的大小和位置
CWnd類的函數(shù)MoveWindow()SetWindowPos()可以改變控件的大小和位置。
void MoveWindow(int x,int y,int nWidth,int nHeight);
void MoveWindow(LPCRECT lpRect);
第一種用法需給出控件新的坐標(biāo)和寬度、高度;
第二種用法給出存放位置的CRect對象;
例:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 ); //
獲取控件指針,IDC_EDIT1為控件ID
pWnd->MoveWindow( CRect(0,0,100,100) ); //
在窗口左上角顯示一個寬100、高100的編輯控件
SetWindowPos()
函數(shù)使用更靈活,多用于只修改控件位置而大小不變或只修改大小而位置不變的情況:
BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
第一個參數(shù)一般設(shè)為NULL;
x
、y控件位置;cx、cy控件寬度和高度;
nFlags
常用取值:
SWP_NOZORDER
:忽略第一個參數(shù);
SWP_NOMOVE
:忽略xy,維持位置不變;
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 ); //
把編輯控件的大小設(shè)為(100,80),位置不變
pWnd = GetDlgItem( IDC_EDIT1 );
pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER ); //
編輯控件的大小和位置都改變
以上方法也適用于各種窗口。

單選按鈕控件(Radio Button)的使用
一、對單選按鈕進行分組:
每組的第一個單選按鈕設(shè)置屬性:GroupTabstop,Auto;其余按鈕設(shè)置屬性TabstopAuto。
如:
Radio1
、Radio2、Radio3為一組,Radio4、Radio5為一組
設(shè)定Radio1屬性:GroupTabstop,Auto
設(shè)定Radio2屬性:Tabstop,Auto
設(shè)定Radio3屬性:Tabstop,Auto
設(shè)定Radio4屬性:GroupTabstop,Auto
設(shè)定Radio5屬性:TabstopAuto
二、用ClassWizard為單選控件定義變量,每組只能定義一個。如:m_Radio1、m_Radio4。
三、用ClassWizard生成各單選按鈕的單擊消息函數(shù),并加入內(nèi)容:
void CWEditView::OnRadio1()
{
m_Radio1 = 0; //
第一個單選按鈕被選中
}
void CWEditView::OnRadio2()
{
m_Radio1 = 1; //
第二個單選按鈕被選中
}
void CWEditView::OnRadio3()
{
m_Radio1 = 2; //
第三個單選按鈕被選中
}
void CWEditView::OnRadio4()
{
m_Radio4 = 0; //
第四個單選按鈕被選中
}
void CWEditView::OnRadio5()
{
m_Radio4 = 1; //
第五個單選按鈕被選中
}
當(dāng)控件變量值為0時,它對應(yīng)組的第一個單選按鈕處于選中狀態(tài)。

BOOL CDzyApp::InitInstance()
...{
AfxEnableControlContainer();
……

// The one and only window has been initialized, so show and update it.
m_pMainWnd->SetWindowPos(NULL,0,0,750,555,SWP_NOMOVE);//設(shè)置窗口的初始大小為750*555
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd
->UpdateWindow();

return TRUE;
}

m_pMainWnd->CenterWindow( GetDesktopWindow() );

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
……

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(
&m_wndToolBar);

CenterWindow( GetDesktopWindow() );
//使窗口打開時處于屏幕正中

return 0;
}

BOOL CTextEditorDoc::OnNewDocument() {
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
SetTitle("未命名.txt"); //設(shè)置文檔標(biāo)題
return TRUE;
}


2、設(shè)置程序標(biāo)題:
在框架類(CMainFrame)PreCreateWindow()函數(shù)中加入語句:m_strTitle = _T("程序標(biāo)題");
如:MainFrm.cpp

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style&=~FWS_ADDTOTITLE;//去除標(biāo)題欄文字前面的"無標(biāo)題"
m_strTitle = _T("文本整理器"); //設(shè)置程序標(biāo)題
return TRUE;
}

以上兩點比較適用于視圖-文檔結(jié)構(gòu)的程序,在新建文檔時,系統(tǒng)會自動運行OnNewDocument()函數(shù),在其中可以設(shè)置合適的標(biāo)題。對于未采用文檔的程序可以用下面的方法修改標(biāo)題:
3
、修改窗口標(biāo)題:
修改窗口標(biāo)題一般在打開文件函數(shù)OnFileOpen()和另存為函數(shù)OnFileSaveAs()中進行,可以使用下面的函數(shù):其中文檔標(biāo)題和程序標(biāo)題可使用定義過的串變量。



項目
如何干凈的刪除一個類?
1、先刪除項目中對應(yīng)的.h.cpp文件,(選中后用Delete鍵刪除)
2
、保存后退出項目,到文件夾中刪除實際的.h.cpp文件;
3
、刪除.clw文件;
4
、重新進入項目,進行全部重建(rebuild all)。

如何建立一個新類?
   
插入”(Insert)菜單中選擇新建類”(New Class),在彈出的對話框中選擇基類(Base class),在Name中輸入新類的名字(一般都以C開頭)即可。
如果想要建立一個沒有基類的自定義類,則在New Class對話框中把Class type設(shè)置為generic,再輸入類名即可。

如何把外來文件添加到項目中?
   
先把外來文件復(fù)制到當(dāng)前項目的目錄下,從項目”(Project)菜單下選擇添加項目”(Add to Project)下的“Files”菜單項,從彈出的打開文件對話框中把外來文件打開即可。

如何在一個工作區(qū)中打開多個項目?
   
一般編程者都有這樣的經(jīng)歷:做了一個項目,由于不滿意,想從頭重做,但又想把舊項目的一些可用內(nèi)容拷到新項目中來,以免做重復(fù)工作,這時就需要在新項目中打開舊項目。
   
先打開新項目,從項目”(Project)菜單下選擇插入項目到工作區(qū)”(Insert Project into Workspace),從彈出的打開文件對話框中打開舊項目的.asp文件即可。
   
之后,可以利用項目”(Project)菜單下的設(shè)置活動項目”(Select Active Project)的選項中切換各打開的項目。
注意:在一個工作區(qū)中打開的各項目不能同名。

如何把項目中的文件分類存放?
當(dāng)我們往項目中添加新類時,它會把源文件放在Source Files下,頭文件放在Header Files下。當(dāng)項目中文件很多時,管理不便,最好添加新節(jié)點,把文件分類放置。
右擊項目節(jié)點樹的根節(jié)點,選擇“New Folder...”,在彈出的對話框中填入新節(jié)點名,則新節(jié)點就建立了,用鼠標(biāo)節(jié)點樹中的文件拖入新節(jié)點,就可以把文件分類了。
以上分類只是在項目的節(jié)點樹中分類,它不影響文件在磁盤上的位置,所有.cpp文件和.h文件仍在項目的根目錄下,最好文件本身也能分類存放在不同文件夾中。
Windows下,用新建文件夾在項目的根目錄下建立子文件夾,如DialogClass,把所有對話框類的.cpp文件和.h文件拖入其中。
回到VC下,右鍵單擊項目樹中更改了路徑的節(jié)點,選擇“Properties”,在彈出的對話框中修改文件路徑,如:把原路徑“.\Dialog1.cpp”改為“.\DialogClass\Dialog1.cpp”。
打開Dialog1.cpp文件,修改它包含的文件路徑。如:
#include "stdafx.h"
#include "PluckBox.h"
#include "Dialog1.h"
改為:
#include "stdafx.h"
#include "..\\PluckBox.h"
#include "Dialog1.h"
打開ClassWizard,它會提示你文件不存在,單擊確定后,從對話框中用“Browse...”選擇文件所在路徑,則ClassWizard也可正常使用了。



編輯
編輯代碼時,跟隨提示消失了怎么辦?
單 擊工具”(Tools)菜單中的設(shè)置”(Options)菜單項,在彈出的Options對話框中選擇Editor制表頁,把它最下方的四個復(fù)選框都 選中(Auto list memberAuto type info、Code commentsAuto parameter info),這樣,當(dāng)用戶輸入“->”“.”時,會自動顯示跟隨提示,減少了輸入負(fù)擔(dān)。



對話框
如何修改對話框的背景色
在對話框的OnPaint()函數(shù)中加入下面語句:
CRect rect;
GetClientRect(&rect); //
計算對話框的尺寸
dc.FillSolidRect(&rect,RGB(192,248,202)); //
繪制對話框背景色

如何讓彈出式對話框具有統(tǒng)一的背景色
在應(yīng)用程序類CxxxAppInitInstance()函數(shù)中加入下面的語句:
SetDialogBkColor( RGB(192,248,202) );
則所有用戶定義的彈出式對話框都以RGB(192,248,202)為背景色,就不需要逐個進行設(shè)置了。


如何讓打開文件對話框能進行多項選擇
在定制打開文件對話框時,增加OFN_ALLOWMULTISELECT屬性,就可以使打開文件對話框進行多選了。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );
之后,用GetStartPosition()函數(shù)獲取選擇的起始文件位置,用GetNextPathName()函數(shù)獲取各位置上的文件名。
如:
if( m_Dlg.DoModal() == IDOK )
{
POSITION pos;
pos = m_Dlg.GetStartPosition();
while( pos )
{
m_Path = m_Dlg.GetNextPathName(pos);
…………
}
}

為什么用打開文件對話框選擇多個文件到一定數(shù)目時,文件沒有打開?
CFileDialog
為文件列表設(shè)置有緩沖區(qū),當(dāng)選擇文件過多時,會造成緩沖區(qū)溢出,造成一些文件沒有被打開??梢圆捎米远x大緩沖區(qū)代替系統(tǒng)緩沖區(qū)的方法解決。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );//
定制打開文件對話框
char* pBuf = new char[20480]; //
申請緩沖區(qū)
m_Dlg.m_ofn.nMaxFile = 20480; //
pBuf代替CFileDialog緩沖區(qū)
m_Dlg.m_ofn.lpstrFile = pBuf;
m_Dlg.m_ofn.lpstrFile[0] = NULL;
…………
delete []pBuf; //
回收緩沖區(qū)


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多