MFC 常见问题
一 常见变量获得
CDC * cDc=GetDC();
HDC m_Screenhdc = this->GetDC()->m_hDC;
// 整个窗口客户区的坐标
this->GetClientRect( &m_WndClientRect );
// 图元坐标编辑区的(即某一控件的窗口)
CWnd m_pEditWnd = GetDlgItem(IDC_PIC_DOTEDIT); /
/ 图元坐标编辑区的相对于对话框的客户区的
Rect m_editWndRect = getEditClientCoord();
// 图元坐标编辑区的自己的
Rect m_pEditWnd->GetClientRect( &m_editRect );
// 图元坐标编辑区的DC m_pEditDC=m_pEditWnd->GetDC();
// 图元坐标编辑区的Graphics m_pEditGraphics = new Graphics( m_pEditDC->m_hDC );
CRect DlgSymbolEdit::getEditClientCoord()
{
CRect rect;
CWnd *pStrokeDis = GetDlgItem(IDC_PIC_DOTEDIT);
pStrokeDis->GetWindowRect( &rect );
// 从屏幕坐标转换成本地坐标
ScreenToClient( rect );
return rect;
}
二.DrawEdge()函数说明
void DlgSymbolEdit::OnPaint()
{
//再一次说明onpaint在onInitDialog之前运行,所以此处要给Rect等赋值。
// 图元坐标编辑区的CWnd
m_pEditWnd = GetDlgItem(IDC_PIC_DOTEDIT);
// 图元坐标编辑区的自己的rect
m_pEditWnd->GetClientRect( &m_editRect );
// 图元坐标编辑区的DC
m_pEditDC=m_pEditWnd->GetDC();
m_editRect.left-=3;
m_editRect.top-=3;
m_editRect.bottom+=3;
m_editRect.right+=3;
//GetDC()->DrawEdge(&m_editRect,EDGE_SUNKEN, BF_RECT);//DrawEdge函数只能用要绘制的空间的CDC。此处用的整个对话框的CDC达不到预期效果。
m_pEditDC->DrawEdge(&m_editRect,EDGE_SUNKEN, BF_RECT);
。。。。
}
下面是转的函数说明
CDC::DrawEdge函数
BOOL DrawEdge( LPRECT lpRect, UINT nEdge, UINT nFlags );
DrawEdge函数自动调用系统相关颜色绘制!无法自行设置颜色!!
返回值
Nonzero if successful; otherwise 0.
如果成功,则返回非零值,否则为0。
参数说明
lpRect
A pointer to a RECT structure that contains the logical coordinates of the rectangle.
指向包含有逻辑坐标矩形的RECT结构的指针。
nEdge
Specifies the type of inner and outer edge to draw. This parameter must be a combination of one inner-border flag and one outer-border flag. See the Remarks section for a table of the parameter’s types.
指定矩形内外边界的类型。该参数是内边界标志和外边界标志的集合。请参阅说明中该参数的类型。
nFlags
The flags that specify the type of border to be drawn. See the Remarks section for a table of the parameter’s values:
指定绘制边界的类型,请参阅说明中该参数的类型。
备注
Call this member function to draw the edges of a rectangle of the specified type and style.
调用该成员函数,绘制指定风格和类型的矩形。
The inner and outer border flags are as follows:
内外边界标志如下:
- Inner-border flags 内边界标志
- BDR_RAISEDINNER Raised inner edge.
内边界凸出。 - BDR_SUNKENINNER Sunken inner edge.
内边界凹下。
- BDR_RAISEDINNER Raised inner edge.
- Outer-border flags外边界标志
- BDR_RAISEDOUTER Raised outer edge. 外边界凸出。
- BDR_SUNKENOUTER Sunken outer edge.
外边界凹下
The nEdge parameter must be a combination of one inner and one outer border flag. The nEdge parameter can specify one of the following flags:
参数必须是内边界标志和外边界标志的组合。可以为以下值之一:
- EDGE_BUMP Combination of BDR_RAISEDOUTER and BDR_SUNKENINNER.
- EDGE_ETCHED Combination of BDR_SUNKENOUTER and BDR_RAISEDINNER.
- EDGE_RAISED Combination of BDR_RAISEDOUTER and BDR_RAISEDINNER.
- EDGE_SUNKEN Combination of BDR_SUNKENOUTER and BDR_SUNKENINNER.
The nFlags parameter types are as follows:
NFlags参数的类型如下:
- BF_RECT Entire border rectangle.
矩形的四周边界。 - BF_LEFT Left side of border rectangle.
矩形的左边界。 - BF_BOTTOM Bottom of border rectangle.
矩形的底部边界 - BF_RIGHT Right side of border rectangle.
矩形的右边界。 - BF_TOP Top of border rectangle.
矩形的顶部边界。 - BF_TOPLEFT Top and left side of border rectangle.
矩形的左、底部边界。 - BF_TOPRIGHT Top and right side of border rectangle.
矩形的右、顶部边界。 - BF_BOTTOMLEFT Bottom and left side of border rectangle.
矩形的左、底部边界。 - BF_BOTTOMRIGHT Bottom and right side of border rectangle.
矩形的右、底部边界。
For diagonal lines, the BF_RECT flags specify the end point of the vector bounded by the rectangle parameter.
对于对角线,BF_RECT标志指定了矢量终点:
- BF_DIAGONAL_ENDBOTTOMLEFT Diagonal border. The end point is the bottom-left corner of the rectangle; the origin is top-right corner.
BF_DIAGONAL_ENDBOTTOMLEFT 对角线边界。终点为矩形的左下角,始点为右上角。 - BF_DIAGONAL_ENDBOTTOMRIGHT Diagonal border. The end point is the bottom-right corner of the rectangle; the origin is top-left corner.
BF_DIAGONAL_ENDBOTTOMRIGHT 对角线边界。终点为矩形的右下角,始点为左下角。 - BF_DIAGONAL_ENDTOPLEFT Diagonal border. The end point is the top-left corner of the rectangle; the origin is bottom-right corner.
BF_DIAGONAL_ENDTOPLEFT 对角线边界。终点为矩形的左上角,始点为右下角。 - BF_DIAGONAL_ENDTOPRIGHT Diagonal border. The end point is the top-right corner of the rectangle; the origin is bottom-left corner.
BF_DIAGONAL_ENDTOPRIGHT 对角线边界。终点为矩形的右上角,始点为左下角。
For more information about the Windows API DrawEdge, see ::DrawEdge in the Win32 SDK Programmer’s Reference.
MFC 常见问题的更多相关文章
- MFC常见问题解惑
MFC类的分类 1 Root: CObject : CObject2 Application Architecture Classes: CWinApp/CFrameWnd/... 3 Window, ...
- MFC常见问题以及解决方法(2)_Cstring和string互相转换
MFC默认编码是unicode(自己改成多字符集是不行的),对话框中对字符串的处理都是宽字符,而且添加变量会默认是CString类型,当你代码中想用string但又遇到必须转为CString的情况,就 ...
- MFC常见问题以及解决方法(1)_MFC下文本编辑框按下回车后窗口退出
这里主要介绍遇到这种方法的解决方案,解决方法可能有多种,但这里只给出有效的一种,这里不会详细说明出现问题的原因以及为什么这样解决,想了解更多可以百度,写这个主要是防止以后忘记,做个简单的笔记. 问题: ...
- MFC常见问题总结
1. c++中的函数前面加个LRESULT是什么意思啊?在微软vc提供的头文件中有定义在winnt.h中typedef long LONG;在windef.h中typedef LONG LRESULT ...
- VC++学习之VC中常见问题
VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...
- MFC控件CTabCtrl关联变量
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,将该控件绑定一个变量 用两种方法: 1 ) 自己定义成员变量 CTabCtr ...
- 【MFC】MFC绘图不闪烁——双缓冲技术
MFC绘图不闪烁——双缓冲技术[转] 2010-04-30 09:33:33| 分类: VC|举报|字号 订阅 [转自:http://blog.163.com/yuanlong_zheng@126/ ...
- 非MFC工程中使用MFC库
目录(?)[-] 需求说明 常见问题 问题分析 参考解决方法 我的解决方案 Stdafxh的原理 需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console A ...
- MFC中的双缓冲技术(解决绘图闪烁问题)
转自 MFC绘图不闪烁——双缓冲技术[转] 在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃. 所谓双缓冲技术,下面是百度百科的 ...
随机推荐
- MySQL提示“错误2:系统找不到指定文件”
一.问题原因 个人猜测可能是因为安装的是绿色版MySQL,然后在系统变量path中加入了解压后的路径.后续操作上没有跳转到解压后的路径,而是直接在cmd的默认路径下新建MySQL的服务,所以导致此问题 ...
- UGUI 加载图片
图片是动态加载的,然后转换为sprite赋值到ugui的按钮上 代码如下 using UnityEngine; using System.Collections; using System.IO; u ...
- 安装PHP5 PHP7
安装 PHP5 PHP官网www.php.net • 当前主流版本为5./7.1 • cd /usr/local/src/ • wget http://cn2.php.net/distribution ...
- Link1123:转换到COFF期间失败:文件无效或损坏
当在编译VS项目时,出现如下错误: 这个错误,表明在连接阶段出错.COFF为Common Object File Format,通用对象文件格式,它的出现为混合语言编程带来方便 ...
- adb 架构
adb是什么? adb就是Android调试桥,很形象啊. 先来看adb原理的逻辑图: ADB架构adb由两个物理文件组成:adb/adb.exe运行于PC端,包括Linux.Windows.Mac ...
- css只改变input输入框光标颜色不改变文字颜色实现方法
input:focus{color:blue}//光标颜色 input{ text-shadow: 0px 0px 0px red;//文字颜色 -webkit-text-fill-color: tr ...
- Linux远程管理之SVN,VNC
一.远程管理的基本概念 首先我们来初略的讲讲远程管理的一些基本概念.对于我们使用的计算机来说,如果是个人计算机,就没有远程管理这一概念了,想用的时候开机就能使用,而对于我们的服务器来说,就不同了,对于 ...
- flume使用之exec source收集各端数据汇总到另外一台服务器
转载:http://blog.csdn.net/liuxiao723846/article/details/78133375 一.场景一描述: 线上api接口服务通过log4j往本地磁盘上打印日志,在 ...
- [原]unity3d刀光剑影(二)
本篇研究 暴走武侠 效果.直接贴代码 Shader "Cg shader with single texture" { Properties { _MainTex ("T ...
- 如何将数组中的后面m个数移动为前面m个数
思路分析: 可以通过递归的方法实现调整: (1)将前n-m个元素的顺序颠倒. (2)将后面m个元素的顺序颠倒. (3)将n个元素的顺序全部颠倒. 通过以上3个步骤的执行,就可以把数组的元素颠倒. 代码 ...