浅显基础教程
电脑操作教程
电脑怎样拨号上网
怎么做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典进步教程
怎样运用代理服务器
怎么做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
怎么制造动画图片
OICQ&ICQ运用办法

高手学习攻略

硬件晋级技巧
CGI教程
ASP教程

PHP教程

注册表运用技巧
路由器的设置
vwin建造攻略
vwin :首页 SQL
最近更新:
Flash
相关内容

Visual C++编程技巧之三

17、怎么创立一个字缭绕的CEditView

18、通用控件的显现窗口

19、移动窗口

20、重置窗口的巨细

21、怎么单击除了窗口标题栏以外的区域使窗口移动

22、怎么改动视窗的布景色彩

23、怎么改动窗口标题

24、怎么避免主框窗口在其阐明中显现活动的文档名

 

17、怎么创立一个字缭绕的CEditView

重载CWnd : : PreCreateWindow和修正CREATESTRUCT结构,封闭CEditView目标的ES_AUTOHSCROLL和WS_HSCROLL风格位, 因为CEditView : : PreCreateWindow显现设置cs. style,调用基类函数后要修正cs . style。

BOOL CSampleEDitView : : PreCreateWindow (CREATESTRUCT&cs)

{

//First call basse class function .

BOOL bResutl =CEditView : : PreCreateWindow (cs) ;

// Now specify the new window style .

cs.style &= ~ (ES_AUTOHSCROLL |WS_HSCROLL);

return bResult ;

}

18、通用控件的显现窗口

MFC供给了几个CView派生的视窗类, 封装了通用控件的功用,但仍然运用工

作框文档显现窗口体系结构:CEditView封装了修正控件,CTreeView坚持了树列表

控件,CListView封装了列表显现窗口控件,CRichEditView能够处理多种修正控件。

19、移动窗口

调用CWnd : : SetWindowPos并指定SWP_NOSIZE标志。意图方位与父窗口

有关(顶层窗口与屏幕有关)。调用CWnd : : MoveWindow时必需求指定窗口

的巨细。

//Move window to positoin 100 , 100 of its parent window .

SetWindowPos (NULL, 100 , 100 , 0 , 0 , SWP_NOSIZE |SWP_NOAORDER);

20、重置窗口的巨细

调用CWnd: : SetWindowPos并指定SWP_NOMOVE标志, 也可调用

CWnd : : MoveWindow 但有必要指定窗口的方位。

// Get the size of the window .

Crect reWindow ;

GetWindowRect (reWindow );

//Make the window twice as wide and twice as tall .

SetWindowPos (NULL , 0 , 0 , reWindow . Width ( ) *2,

reWindow . Height () * 2,

SWP_NOMOVE |SWP_NOZORDER );

21、怎么单击除了窗口标题栏以外的区域使窗口移动

当窗口需求确认鼠标方位时Windows向窗口发送WM_NCHITTEST信息,能够处理

该信息使Windows以为鼠标在窗口标题上。关于对话框和根据对话的运用程序,可

以运用ClassWizard处理该信息并调用基类函数, 假如函数回来HTCLIENT 则标明

鼠标在客房区域,回来HTCAPTION标明鼠标在Windows的标题栏中。

UINT CSampleDialog : : OnNcHitTest (Cpoint point )

{

UINT nHitTest =Cdialog: : OnNcHitTest (point );

return (nHitTest = =HTCLIENT)? HTCAPTION : nHitTest ;

}

上述技能有两点晦气之处, 其一是在窗口的客户区域双击时, 窗口将极大;

其二, 它不合适包含几个视窗的主框窗口。还有一种办法,当用户按下鼠标左键

使主框窗口以为鼠标在其窗口标题上,运用ClassWizard在视窗中处理WM_LBUTTODOWN

信息并向主框窗口发送一个WM_NCLBUTTONDOWN信息和一个单击测验HTCAPTION。

void CSampleView : : OnLButtonDown (UINT nFlags , Cpoint point )

{

CView : : OnLButtonDow (nFlags , pont );

//Fool frame window into thinking somene clicked on

its caption bar .

GetParentFrame ( ) —> PostMessage (

WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARAM (poitn .x , point .y) );

}

该技能也适用于对话框和根据对的运用程序,仅仅不用调用CWnd : : GetParentFrame 。

void CSampleDialog : : OnLbuttonDown (UINT nFlags, Cpoint point )

{

Cdialog : : OnLButtonDow (nFlags, goint );

//Fool dialog into thinking simeone clicked on its caption bar .

PostMessage (WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARM (point.x , point. y ) )

}

22、怎么改动视窗的布景色彩

Windows向窗口发送一个WM_ERASEBKGND音讯告诉该窗口擦除布景,能够运用

ClassWizard重载该音讯的缺省处理程序来擦除布景(实践是画),并回来TRUE以

避免Windows擦除窗口。

//Paint area that needs to be erased.

BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)

{

// Create a pruple brush.

CBrush Brush (RGB (128 , 0 , 128) );

// Select the brush into the device context .

CBrush* pOldBrush = pDC—>SelcetObject (&brush);

// Get the area that needs to be erased .

CRect reClip ;

pDC—>GetCilpBox (&rcClip);

//Paint the area.

pDC—> PatBlt (rcClip.left , rcClip.top ,

rcClip.Width ( ) , rcClip.Height ( ) , PATCOPY );

//Unselect brush out of device context .

pDC—>SelectObject (pOldBrush );

// Return nonzero to half fruther processing .

return TRUE;

}

23、怎么改动窗口标题

调用CWnd : : SetWindowText能够改动任何窗口(包含控件)的标题。

//Set title for application's main frame window .

AfxGetMainWnd ( ) —> SetWindowText (_T("Application title") );

//Set title for View's MDI child frame window .

GetParentFrame ( ) —> SetWindowText ("_T ("MDI Child Frame new title") );

//Set title for dialog's push button control.

GetDigitem (IDC_BUTTON) —> SetWindowText (_T ("Button new title ") );

假如需求常常修正窗口的标题(注:控件也是窗口),应该考虑运用半文档化

的函数AfxSetWindowText。该函数在AFXPRIV.H中阐明,在WINUTIL.CPP中完成,在

联机帮助中找不到它,它在AFXPRIV.H中半文档化, 在今后发行的MFC中将文档化。

AfxSetWindowText的完成如下:

voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew )

{

itn nNewLen= Istrlen (Ipaznew);

TCHAR szOld [256];

//fast check to see if text really changes (reduces flash in the controls )

if (nNewLen >_contof (szOld) ||

: : GetWindowText (hWndCrtl , szOld , _countof (szOld) !=nNewLen ||

Istrcmp (szOld , IpszNew )! = 0

{

//change it

: : SetWindowText (hWndCtrl , IpszNew );

}

}

24、怎么避免主框窗口在其阐明中显现活动的文档名

创立主框窗口和MDI子窗口进一般具有FWS_ADDTOTITLE风格位, 假如不期望在

阐明中主动增加文档名, 有必要制止该风格位, 能够运用ClassWizard重置

CWnd: : PreCreateWindow并封闭FWS_ADDTOTITLE风格。

BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT&cs)

{

//Turn off FWS_ADDTOTITLE in main frame .

cs.styel & = ~FWS_ADDTOTITLE ; 

return CMDIFrameWnd : : PreCreateWindow (cs );

}

封闭MDI子窗口的FWS _ADDTOTITLE风格将创立一个具有空标题的窗口,能够调

用CWnd: : SetWindowText来设置标题。记住自己设置标题时要遵从接口风格攻略。

用VB完成多文件查找与替换功用
用VB 5.0 规划Browser及FTP程序
用Visual Basic 5.0规划E-mail程序
谈谈WIN API在VB中的运用
在VB中运用Word的“艺术字”东西
获取Win95特别目录精确途径
VC技巧一
VC19问
VC技巧5则
Visual C++编程技巧之一
Visual C++编程技巧之2
Visual C++编程技巧之3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
教程站
收集整理