`
阿尔萨斯
  • 浏览: 4169759 次
社区版块
存档分类
最新评论

VC常用技巧集锦(一)

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

一。如何限制编辑框中的准许字符以及修改输入的字符
使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd ; OnChar,否则不调用OnChar.
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
{
file://Determine if nChar is an alphabetic character .
if (: : IsCharAlpha ( ( TCHAR) nChar ) )
CEdit : : OnChar (nChar, nRepCnt , nFlags );
}
如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit : : OnChar,然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值 ,这样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用CWnd: : DefWindowProc。下例说明了如何将字符转变为大写:
file://Make all characters uppercase
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
{
file://Make sure character is uppercase .
if (: : IsCharAlpha ( .( TCHAR) nChar)
nChar=: : CharUpper (nChar ) ;
file://Bypass default OnChar processing and directly call
file://default window proc.
DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt , nFlags )) ;
}

二。在程序运行期间,怎样禁止窗口右上方的关闭按钮
CMenu *pMenu = AfxGetMainWnd()->GetSystemMenu(FALSE) ;
if (pMenu)
pMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED) ;

// 变为非禁止状态
CMenu *pMenu = AfxGetMainWnd()->GetSystemMenu(FALSE) ;
if (pMenu)
pMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_ENABLED) ;

三。画图屏幕不闪烁的方法
当使视窗的某一区域无效时,系统将发送WM_UPDATE消息,引发视类的重画。如果在OnDraw()函数中简单地将所有的图形对象重画,将引起明显的闪烁。因此,需要做相应的处理。本系统采用了先在内存中绘制图形,然后再把绘好的图形以位图方式从内存拷贝到窗口客户。
void CDrawView::OnDraw(CDC* pDC)
{
CDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CDC dc;
CBitmap bitmap;

CBitmap* pOldBitmap;
CRect client;
CRect rect;
pDC->GetClipBox(client);//检取无效区
GetClientRect(rect);//检取整个客户区
if(dc.CreateCompatibleDC(pDC))//创建一个与pDC兼容的内存设备环境
{
if(bitmap.CreateCompatibleBitmap(pDC,rect.Width(),
rect.Height()))//创建一与pDC兼容的位图,大小为整个客户区
{
OnPrepareDC(&dc,NULL);//使dc与pDC具有同样的映射关系
pOldBitmap=dc.SelectObject(&bitmap);//将位图选入内存环境
dc.SelectClipRgn(NULL);//使dc的整个客户区都成无效区
dc.IntersectClipRect(client);//再“与上”检取的无效区,使
file://内存环境与pDC检取的无效区相等
}
}
CBrush brush;
if(!brush.CreateSolidBrush(RGB(255,255,255)))
return ;
brush.UnrealizeObject();
dc.FillRect(client,&brush);//将dc的作图区刷新成背景色

if(m_drawObjs.GetCount()!=0)
Draw(&dc);//将所有的画图对象在内存裁减区内重画


pDC->BitBlt(client.left,client.top,client.Width(),client.Height(),
&dc,client.left,client.top,SRCCOPY);//将内存裁减区的位图
file://拷贝到窗口裁减区
dc.SelectObject(pOldBitmap);

}




分享到:
评论

相关推荐

    VC最常用问答经典集锦.doc

    好多实用技巧,很多是前辈的经验总结,还有不想看英文文档的朋友,有需要的朋友可以使用,很珍贵的资源

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频/视频处理技术及工程实践(分卷2)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    asp.net知识库

    .net中的正则表达式使用高级技巧 (一) C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET...

    Visual C++音频视频处理技术及工程实践(分卷0)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频/视频处理技术及工程实践 (分卷1)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频视频处理技术及工程实践(分卷9)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频视频处理技术及工程实践(分卷7)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频视频处理技术及工程实践(分卷6)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 ...

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的...

    Visual C++音频视频处理技术及工程实践地址

    2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的...

Global site tag (gtag.js) - Google Analytics