易语言API函数大全3
9. API之设备场景函数 CombineRgn 将两个区域组合为个新区域 CombineTransform 驱动世界转换。它相当于依顺序进两次转换 CreateCompatibleDC 创建个与特定设备场景致的内存设备场景 CreateDC 为专门设备创建设备场景 CreateEllipticRgn 创建个椭圆 CreateEllipticRgnIndirect 创建个内切于特定矩形的椭圆区域 CreateIC 为专设备创建个信息场景 CreatePolygonRgn 创建个由系列点围成的区域 CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 CreateRectRgn 创建个矩形区
贴吧:gmkey作者:gmkey_com 2024-01-28 19:12
VB存心跟我过不去。。
Option Explicit Private Type PointAPI X As Long Y As Long End Type Private Type RECT Left As Long Top As Long Right As Long Bottom As Long E
贴吧:vb作者:《顾名思义》 2013-05-31 15:08
求助大神,为什么我的登录界面找不到数据库?
求助大神 ,我刚开始学。。。为主窗口做了个登录界面,但是登录不进去 数据库(ACCESS)是Database0中的表OPER
贴吧:mfc作者:薛靖国 2017-05-09 15:17
回复:常用MFC和API函数
CRect类:封装了一个矩形区域及相关操作
CRect::BottomRight 求CRect对象的右下角坐标
CPoint& BottomRight();
返回值:对CRect对象右下角点的一个引用
CRect::CenterPoint 求CRect对象的中心点
CPoint CenterPoint()const;
返回值:CRect对象的中心点坐标
CRect::CopyRect 将一个矩形复制到CRect对象中
void CopyRect(LPCRECT lpScrRect)
参数:lpScrRect 指向源矩形的RECT结构或CRect对象
返回值:无
CRect::Height 求CRect对象的高度
int Height()const;
返回值:CRect对象的高度
CRect::PtInRect 判断指定点是否在CRect对象的区域内
BOOL PtInRect(POINT point)const;
参数:point是一个POINT结构或CPoint对象
返回值:指定点在CRect对象内,返回非0值,否则返回0
CRect::SetRect 设置CRect对象的值
void SetRect(int x1,int y1,int x2, int y2);
参数:x1、y1为左上角坐标,x2、y2为右下角坐标
CRect::Width 求CRect对象的宽度
int Width()const;
返回值:CRect对象的宽度
CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域
CRgn::CreateEllipticRg 创建一个椭圆区域
BOOL CreateEllipticRg(int x1,int y1,int x2,int y2);
参数:x1、y1 该椭圆的限定矩形的左上角的逻辑坐标;
x2、y2 该椭圆的限定矩形的右下角的逻辑坐标。
返回值:若成功,返回非0,否则返回0
CRgn::CreatePolygonRgn 创建一个多边形区域
BOOL CreatePolygonRgn(LPPOINT lpPoints,int nCount,int nMode);
参数:lpPoints指向一个POINT结构的数组或CPoint对象的数组;nCount是数组中元素个数;nMode指定区域的填充方式,可以为ALTERATE或WINDING
返回值:若成功,返回非0,否则返回0
CSize类:用于表示相对坐标或位置
贴吧:微电脑作者:星期天de早晨 2022-01-25 23:49
回复:MFC窗体自绘
禁止标题栏重绘减少闪烁(去掉OnNcPaint)
******************************************/
void CtestDlg::OnNcPaint()
{
//CDialog::OnNcPaint();//去掉
}
/***********************************
绘制客户区背景
***********************************/
void CtestDlg::DrawClientBackground()
{
CRect rect;
GetClientRect(&rect);
if(rect.IsRectEmpty())
return;
CClientDC dc(this);
CImage img;
LoadImageFromResource(&img,IDR_CLIENTBK,_T("PNG"));
img.Draw(dc.m_hDC ,0,0,rect.Width(),rect.Height());
img.Destroy(); }
/***********************************
贴图函数(保持原大小)
***********************************/
void CtestDlg::FillButton(int nID, CDC* pDC, int x , int y)
{
CImage Image;
LoadImageFromResource(&Image,nID,_T("PNG"));
Image.Draw(pDC->m_hDC ,x,y);
Image.Destroy();
}
BOOL CtestDlg::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}
/***********************************
响应按钮事件
***********************************/
void CtestDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
ScreenToClient(&point);
point.x=point.x+4;
point.y=point.y+30;
if(btn_cls_rect.PtInRect(point))
{
SendMessage(WM_CLOSE,0,0);
}
if(btn_max_rect.PtInRect(point))
{
SendMessage(WM_SYSCOMMAND,IsZoomed()?SC_RESTORE:SC_MAXIMIZE, 0);
Invalidate();
}
if(btn_min_rect.PtInRect(point))//如果点击点在最小化图标内,响应最小化事件
{
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
CDialog::OnNcLButtonDown(nHitTest, point);
}
/***********************************
窗体Resize时重定义按钮位置
***********************************/
void CtestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy); if(!IsIconic())//如果窗体没有最小化
{
int x=cx-wnd_rect.Width();
int y=cy-wnd_rect.Height();
btn_cls_rect.InflateRect(x,y);
btn_max_rect.InflateRect(x,y);
btn_min_rect.InflateRect(x,y);
}
DrawTitleBar();//从右向左缩减时确保按钮可见
}
/***********************************
鼠标移至按钮时更新图片
***********************************/
void CtestDlg::OnNcMouseMove(UINT nHitTest, CPoint point)
{
CWindowDC dc(this);
/*ScreenToClient(&point);
point.x=point.x+4;
point.y=point.y+30;*/
point.x-=wnd_rect.left;
point.y-=wnd_rect.top; BOOL bCls = btn_cls_rect.PtInRect(point);
BOOL bMax = btn_max_rect.PtInRect(point);
BOOL bMin = btn_min_rect.PtInRect(point); //更新当前按钮
FillButton(bCls ? IDR_CLS_HOT : IDR_CLS ,&dc,btn_cls_rect.left,btn_top);
if(IsZoomed())
FillButton(bMax ? IDR_NOM_HOT : IDR_NOM ,&dc,btn_max_rect.left,btn_top);
else
FillButton(bMax ? IDR_MAX_HOT : IDR_MAX ,&dc,btn_max_rect.left,btn_top);
FillButton(bMin ? IDR_MIN_HOT : IDR_MIN ,&dc,btn_min_rect.left,btn_top);
CDialog::OnNcMouseMove(nHitTest, point);
}
/***********************************
鼠标移出窗体时还原按钮图片
***********************************/
void CtestDlg::OnTimer(UINT_PTR nIDEvent)
{
CPoint Point;
GetCursorPos(&Point);
CWindowDC dc(this); if(!wnd_rect.PtInRect(Point))
{
FillButton(IDR_CLS ,&dc,btn_cls_rect.left,btn_top);
FillButton(IsZoomed() ? IDR_NOM : IDR_MAX ,&dc,btn_max_rect.left,btn_top);
FillButton(IDR_MIN ,&dc,btn_min_rect.left,btn_top);
} CDialog::OnTimer(nIDEvent);
}
贴吧:mfc作者:wsfxzxb 2012-10-06 16:16
回复:额。。 整人贴 后期会发病毒代码
再接下来
现在框框和鼠标的坐标都已经有了
就剩下判断鼠标坐标是否在框框内了
为此
新建了一个函数
代码如下:
BOOL RectTest(HWND hWnd, int ButtonId, RECT rect, POINT ps)
{
BOOL bInRect;
NewScreenToClient(hWnd, GetDlgItem(hWnd, ButtonId), rect);
rect.left = rect.left - 30;
rect.top = rect.top - 30;
rect.right = rect.right + 30;
rect.bottom = rect.bottom + 30;
bInRect = PtInRect(&rect, ps);
return bInRect;
}
创建了一个返回值为布尔类型的函数
其中的重点是PtlnRect函数
这个函数接受一个RECT的地址 和一个 POINT类型的变量
然后返回一个BOOL 告诉你你所给予的坐标是不是在RECT里面
至于中间的加减运算
是我在考虑到如果不对识别区域进行扩张的话
操作如果比较快 电脑可能来不及反应
所以对识别区域扩张了一点点
贴吧:编程作者:夜__梓 2018-06-15 19:26
回复:关于检测点是否在RECT区域内
ptInRegion不如ptInRect
前者需要创建Region对象,按MSDN中的说法,在使用完后需要调用deleteObject释放内存,后者直接使用即可
贴吧:vb作者:小fisher 2010-02-02 14:51
回复:想请教关於在vs2008 c++中创建mfc的问题
: error LNK2019: 无法解析的外部符号 __imp__PtInRect@12 在函式 "public: int __thiscall CRect::PtInRect(struct tagPOINT)const " (?PtInRect@CRect@@QBEHUtagPOINT@@@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__SetRect@20 在函式 "public: void __thiscall CRect::SetRect(int,int,int,int)" (?SetRect@CRect@@QAEXHHHH@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__SetRectEmpty@4 在函式 "public: void __thiscall CRect::SetRectEmpty(void)" (?SetRectEmpty@CRect@@QAEXXZ) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__EqualRect@8 在函式 "public: int __thiscall CRect::EqualRect(struct tagRECT const *)const " (?EqualRect@CRect@@QBEHPBUtagRECT@@@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__InflateRect@12 在函式 "public: void __thiscall CRect::InflateRect(int,int)" (?InflateRect@CRect@@QAEXHH@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__OffsetRect@12 在函式 "public: void __thiscall CRect::OffsetRect(int,int)" (?OffsetRect@CRect@@QAEXHH@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__IntersectRect@12 在函式 "public: int __thiscall CRect::IntersectRect(struct tagRECT const *,struct tagRECT const *)" (?IntersectRect@CRect@@QAEHPBUtagRECT@@0@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__UnionRect@12 在函式 "public: int __thiscall CRect::UnionRect(struct tagRECT const *,struct tagRECT const *)" (?UnionRect@CRect@@QAEHPBUtagRECT@@0@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__SubtractRect@12 在函式 "public: int __thiscall CRect::SubtractRect(struct tagRECT const *,struct tagRECT const *)" (?SubtractRect@CRect@@QAEHPBUtagRECT@@0@Z) 中被参考
1>atlsd.lib(atltypes.obj) : error LNK2019: 无法解析的外部符号 __imp__MulDiv@12 在函式 "public: class CRect __thiscall CRect::MulDiv(int,int)const " (?MulDiv@CRect@@QBE?AV1@HH@Z) 中被参考
1>C:\Documents and Settings\WW\My Documents\Visual Studio 2008\Projects\testaaaa\Debug\testaaaa.exe : fatal error LNK1120: 40 个无法解析的外部符号
1>已将建置记录储存於 "file://c:\Documents and Settings\WW\My Documents\Visual Studio 2008\Projects\testaaaa\testaaaa\Debug\BuildLog.htm"
1>testaaaa - 46 个错误,0 个警告
========== 建置: 0 成功、1 失败、0 最新、0 略过 ==========
即 使是在创建WIN32主控台应用程序 勾选加入通用标头档中的MFC选项且不加任何CODE依然会产生类似的错误 所以想请问各位前辈该如何解决
贴吧:vc作者:sliver00000 2010-04-10 21:37