MFC中,结构体RECT的成员变量到底是什么意思?GetWindowRect和GetItemRect又是什么?
本人在自学,这个地方搞不懂,请求帮助,谢谢!就是一个选项卡初始化程序intCDlg_TabCtrl::OnInitDialog(void){CTabCtrl*pTab=(...
本人在自学,这个地方搞不懂,请求帮助,谢谢!
就是一个选项卡初始化程序
int CDlg_TabCtrl::OnInitDialog(void)
{
CTabCtrl * pTab = (CTabCtrl *)GetDlgItem(IDC_TAB1);//pTab是选项卡指针
pTab->InsertItem(1, L"11");
pTab->InsertItem(2, L"22");
pTab->InsertItem(3, L"33");
////////创建页面窗口
m_ListBox1.Create(IDD_DlgList);
m_CMB2.Create(IDD_DlgCMb);
m_RDB3.Create(IDD_DlgRDB);
//设置父窗口
m_ListBox1.SetParent(pTab);
m_CMB2.SetParent(pTab);
m_RDB3.SetParent(pTab);
//设置子窗口位置
RECT r1, r2, r3;//定义三个结构体变量,每个变量有4个成员left、top、right、bottom
pTab->GetWindowRect(&r2);//取得当前窗口数据,存放到结构体变量r2中,是不是这时的r2就已经给
int i = r2.left; //自己的4个成员变量赋值了呢?如果是每个成员变量代表什么意思呢?
int j = r2.right; //或者说r2到底得到的是什么数据呢?
int k = r2.top;
int s = r2.bottom;
pTab->GetItemRect(0, &r3);//获取选项卡第一个项目窗口大小,将数据存放到r3中,那么r3到底存的是什
int a = r3.left; //数据呢?
int b = r3.right;
int c = r3.top;
int d = r3.bottom;
r1.left = 5;//设置结构体r1的左边距离主窗口左边的距离,我试着将这个数值加大,发现数值越大,距离
//左面边框越远。
r1.top = r3.bottom + 5;//不明白为什么r1的顶部要用r3的底部+5来设定?
r1.right = r2.right - r2.left - 5;//r1的右边为什么要用r2的右边减去r2的左边在减去5?
r1.bottom = r2.bottom - r2.top - r1.top;//r1的底部为什么要用r2的底部减去r2的顶部在减去r1的顶部?
m_ListBox1.MoveWindow(&r1);
m_CMB2.MoveWindow(&r1);
m_RDB3.MoveWindow(&r1);
return 0; //r2和r3到底保存的是什么?
}
设置断点后得到的数值到底是什么意思呢? 展开
就是一个选项卡初始化程序
int CDlg_TabCtrl::OnInitDialog(void)
{
CTabCtrl * pTab = (CTabCtrl *)GetDlgItem(IDC_TAB1);//pTab是选项卡指针
pTab->InsertItem(1, L"11");
pTab->InsertItem(2, L"22");
pTab->InsertItem(3, L"33");
////////创建页面窗口
m_ListBox1.Create(IDD_DlgList);
m_CMB2.Create(IDD_DlgCMb);
m_RDB3.Create(IDD_DlgRDB);
//设置父窗口
m_ListBox1.SetParent(pTab);
m_CMB2.SetParent(pTab);
m_RDB3.SetParent(pTab);
//设置子窗口位置
RECT r1, r2, r3;//定义三个结构体变量,每个变量有4个成员left、top、right、bottom
pTab->GetWindowRect(&r2);//取得当前窗口数据,存放到结构体变量r2中,是不是这时的r2就已经给
int i = r2.left; //自己的4个成员变量赋值了呢?如果是每个成员变量代表什么意思呢?
int j = r2.right; //或者说r2到底得到的是什么数据呢?
int k = r2.top;
int s = r2.bottom;
pTab->GetItemRect(0, &r3);//获取选项卡第一个项目窗口大小,将数据存放到r3中,那么r3到底存的是什
int a = r3.left; //数据呢?
int b = r3.right;
int c = r3.top;
int d = r3.bottom;
r1.left = 5;//设置结构体r1的左边距离主窗口左边的距离,我试着将这个数值加大,发现数值越大,距离
//左面边框越远。
r1.top = r3.bottom + 5;//不明白为什么r1的顶部要用r3的底部+5来设定?
r1.right = r2.right - r2.left - 5;//r1的右边为什么要用r2的右边减去r2的左边在减去5?
r1.bottom = r2.bottom - r2.top - r1.top;//r1的底部为什么要用r2的底部减去r2的顶部在减去r1的顶部?
m_ListBox1.MoveWindow(&r1);
m_CMB2.MoveWindow(&r1);
m_RDB3.MoveWindow(&r1);
return 0; //r2和r3到底保存的是什么?
}
设置断点后得到的数值到底是什么意思呢? 展开
1个回答
展开全部
RECT 是M$ windows API中定义的一个结构体类型用来描述 矩形范围 上下左右的 坐标
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT;
你可以去查msdn或者直接打开头文件windef.h看
windows提供给你一个叫做GetWindowRect的函数(这里是mfc CWnd类的成员函数,其实就是同名API函数包装下)
你去调用这个函数 这个函数就可以返回一个RECT类型的数据但是你需要自定定义一个RECT类型的变量
并且把这个变量的地址传给这个函数,这个函数会把返回值写入到这个传入地址对应的内存变量中
LZ C语言估计没学好,不然不会看不明白这是典型的 指针和结构体的综合运行
这个加5神马你得先宝明白神马是窗口的客户区,客户区坐标怎样的
举例:一个窗口中有一个按钮
这个按钮相对窗口 客户区左上角坐标是 水平100,垂直50 ,按钮大小 宽80,搞35,
那么你写代码得到这个按钮的“RECT” 就是 left 100 ,top 50 ,right 180 ,bottom 85
( 窗口关系问题,tab的子窗口item 的坐标相对父窗口tab的左上角,父子窗口关系,
还有一种是相对屏幕左上角的坐标关系)
希望LZ 能明白
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT;
你可以去查msdn或者直接打开头文件windef.h看
windows提供给你一个叫做GetWindowRect的函数(这里是mfc CWnd类的成员函数,其实就是同名API函数包装下)
你去调用这个函数 这个函数就可以返回一个RECT类型的数据但是你需要自定定义一个RECT类型的变量
并且把这个变量的地址传给这个函数,这个函数会把返回值写入到这个传入地址对应的内存变量中
LZ C语言估计没学好,不然不会看不明白这是典型的 指针和结构体的综合运行
这个加5神马你得先宝明白神马是窗口的客户区,客户区坐标怎样的
举例:一个窗口中有一个按钮
这个按钮相对窗口 客户区左上角坐标是 水平100,垂直50 ,按钮大小 宽80,搞35,
那么你写代码得到这个按钮的“RECT” 就是 left 100 ,top 50 ,right 180 ,bottom 85
( 窗口关系问题,tab的子窗口item 的坐标相对父窗口tab的左上角,父子窗口关系,
还有一种是相对屏幕左上角的坐标关系)
希望LZ 能明白
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询