GetWindowRect(HWND hWnd,LPRECT lpRect)在什么情况下取不到矩形的值?

ahphone 2001-06-27 01:18:07
CWnd* pWnd = CWnd::WindowFromPoint(point);
HWND hwnd = pWnd->GetSafeHwnd();
LPRECT lpRect;
ZeroMemory(&lpRect,sizeof(LPRECT));
::GetClientRect(hwnd,lpRect);
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gpmn 2001-06-27
  • 打赏
  • 举报
回复
可能窗口不可见的时候得不到吧(猜的);
在GetClientRect/GetWindowRect前,用CWnd::GetSafeHwnd ()看看hWnd有没有效
plato 2001-06-27
  • 打赏
  • 举报
回复
RECT rect;
ZeroMemory(&lpRect,sizeof(LPRECT));
::GetClientRect(hwnd,&rect);
ahphone 2001-06-27
  • 打赏
  • 举报
回复
最后一句写错了
原tab控件,仿360开关控件版权归原作者! VB控件背景透明代码来自:新浪 “玄雨清风”的博客 感谢以上两位源代码作者 链接:http://pan.baidu.com/s/1hrAEXqG 密码:nfhc '-----------------------以下是转自博客的控件透明源代码(可透明至父窗体或桌面)------------- '添加一个用户控件UserControl,代如下: Option Explicit '实现用户控件UserControl的"伪透明" 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 End Type Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const WM_ERASEBKGND = &H14 Private Const WM_PAINT = &HF Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source Public Event MouseDown(Button As Integer, Shift As Integer, X A
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 窗口_回归98风格 (取窗口句柄 ()) .子程序 窗口_回归98风格 .参数 hWnd, 整数型 .局部变量 hRgn, 整数型, , , '  .局部变量 Rc, RECT GetWindowRect (hWnd, Rc) hRgn = CreateRectRgn (0, 0, Rc.Right - Rc.Left, Rc.Bottom - Rc.Top) SetWindowRgn (hWnd, hRgn, 真) DeleteObject (hRgn).版本 2 .DLL命令 CreateRectRgn, 整数型, "gdi32", "CreateRectRgn", , 创建一个由点X1,Y1和X2,Y2描述的矩形区域  执行成功为区域句柄,失败则为零     .参数 X1, 整数型, , 矩形左上角X,Y坐标     .参数 Y1, 整数型, , 同上     .参数 X2, 整数型, , 矩形右下角X,Y坐标;     .参数 Y2, 整数型, , 同上; .DLL命令 SetWindowRgn, 整数型, "user32", "SetWindowRgn", , 这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。     .参数 hWnd, 整数型     .参数 hRgn, 整数型     .参数 bRedraw, 逻辑型 .DLL命令 DeleteObject, 整数型, "gdi32", "DeleteObject", , 用这个函数删除GDI对象,比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放  非零表示成功,零表示失败     .参数 hObject, 整数型, , 一个GDI对象的句柄; .DLL命令 GetWindowRect, 整数型, "user32", "GetWindowRect", , 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内  非零表示成功,零表示失败。会设置GetLastError     .参数 hwnd, 整数型, , 想获得范围矩形的那个窗口的句柄     .参数 lpRectRECT, , RECT,屏幕坐标中随同窗口装载的矩形;

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧