VC中如何获取控件的原始大小?
先看一简单的对话框资源:-------------------------------------------------IDD_MAINFORMDIALOG0,0,13...
先看一简单的对话框资源:
-------------------------------------------------
IDD_MAINFORM DIALOG 0, 0, 139, 174
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
CAPTION "AncientryKnight"
FONT 9, "Microsoft Sans Serif"
BEGIN
COMBOBOX IDC_CMB_SEARCH,30,4,102,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "查找:",IDC_STATIC,5,5,21,10
LTEXT "静态",IDC_LABEL_STATUS,2,159,136,13,SS_CENTERIMAGE | WS_BORDER
CONTROL "",IDC_LIST_RESULT,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,66,126,48
CONTROL "",IDC_LIST_SEARCH,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,24,126,36
CONTROL "",IDC_PIC_LOGO,"Static",SS_BITMAP,48,120,13,11
END
-----------------------------------------------------
如上是一个简单的对话框资源,用SDK的方式创建的对话框,如何在代码中获取控件的原始的大小位置信息(可不是调用GetWindowRect这样的函数,这样的函数获取的是当前的信息),我是想获取在设计对话框的时候指定的控件的大小及位置信息。
另外我是想直接读取这些信息,而不是在WM_INITDIALOG中获取保存到变量中,然后在其它地方读取。我是想随时随地在任何地方,指定控件句柄或控件ID就可以读取到这些信息。请问如何做到?谢谢!!!
我的意思是想有没有现成的API或者简单的方式可以读取到! 展开
-------------------------------------------------
IDD_MAINFORM DIALOG 0, 0, 139, 174
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
CAPTION "AncientryKnight"
FONT 9, "Microsoft Sans Serif"
BEGIN
COMBOBOX IDC_CMB_SEARCH,30,4,102,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "查找:",IDC_STATIC,5,5,21,10
LTEXT "静态",IDC_LABEL_STATUS,2,159,136,13,SS_CENTERIMAGE | WS_BORDER
CONTROL "",IDC_LIST_RESULT,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,66,126,48
CONTROL "",IDC_LIST_SEARCH,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,24,126,36
CONTROL "",IDC_PIC_LOGO,"Static",SS_BITMAP,48,120,13,11
END
-----------------------------------------------------
如上是一个简单的对话框资源,用SDK的方式创建的对话框,如何在代码中获取控件的原始的大小位置信息(可不是调用GetWindowRect这样的函数,这样的函数获取的是当前的信息),我是想获取在设计对话框的时候指定的控件的大小及位置信息。
另外我是想直接读取这些信息,而不是在WM_INITDIALOG中获取保存到变量中,然后在其它地方读取。我是想随时随地在任何地方,指定控件句柄或控件ID就可以读取到这些信息。请问如何做到?谢谢!!!
我的意思是想有没有现成的API或者简单的方式可以读取到! 展开
3个回答
展开全部
现成的API至少我没发现。
非要实现你所说的。
可以自己写1个类。
以文本方式读取文件.rc,通过对话框ID查询确定资源定义的地方,再通过后面的字符判断是不是自己需要的内容。
通过对话框ID和对话框上面的控件ID获取指定的对话框控件信息。
1个ID可能有2处定义,定义的项不同。搞清楚.rc的结构了就可以准确找出.rc里的全部信息。
比较复杂。不过写出一个类了以后就当API用了。
顺便说一下,你的想法很奇怪。我的方法更奇怪!
再顺便说一下,PE文件中资源的组织方式是:
第1层(资源类型)->第2层(资源ID)->第3层(资源代码页)->节点(资源数据指针)->数据
换个角度来说,你也就是在问一个窗口是怎么被windows内部创建的。我也想知道!!!
非要实现你所说的。
可以自己写1个类。
以文本方式读取文件.rc,通过对话框ID查询确定资源定义的地方,再通过后面的字符判断是不是自己需要的内容。
通过对话框ID和对话框上面的控件ID获取指定的对话框控件信息。
1个ID可能有2处定义,定义的项不同。搞清楚.rc的结构了就可以准确找出.rc里的全部信息。
比较复杂。不过写出一个类了以后就当API用了。
顺便说一下,你的想法很奇怪。我的方法更奇怪!
再顺便说一下,PE文件中资源的组织方式是:
第1层(资源类型)->第2层(资源ID)->第3层(资源代码页)->节点(资源数据指针)->数据
换个角度来说,你也就是在问一个窗口是怎么被windows内部创建的。我也想知道!!!
展开全部
COMBOBOX IDC_CMB_SEARCH,30,4,102,30
LTEXT "查找:",IDC_STATIC,5,5,21,10
LTEXT "静态",IDC_LABEL_STATUS,2,159,136,13,
如果没猜错的话就这些后面的四个数吧,左上角与右下角的坐标,控件产生的时候就是以这几个数初始化大小的,你如果是获取控件大小,为什么不用GetWindowRect?难道它就不是现成的?难道它就不是API?无论是SDK还是MFC类库,它们所封装的依然是API,你的目的是完成需求而已。
第二个问题,估计你是想问类间访问成员,其实这个很普遍,网上一搜就搜到了,通常都是获取该资源框的句柄或者获取该类的应用指针,然后就可以间接访问了,实践起来很简单,但是说起来比较复杂而且难理解,建议你看一下网上的。
LTEXT "查找:",IDC_STATIC,5,5,21,10
LTEXT "静态",IDC_LABEL_STATUS,2,159,136,13,
如果没猜错的话就这些后面的四个数吧,左上角与右下角的坐标,控件产生的时候就是以这几个数初始化大小的,你如果是获取控件大小,为什么不用GetWindowRect?难道它就不是现成的?难道它就不是API?无论是SDK还是MFC类库,它们所封装的依然是API,你的目的是完成需求而已。
第二个问题,估计你是想问类间访问成员,其实这个很普遍,网上一搜就搜到了,通常都是获取该资源框的句柄或者获取该类的应用指针,然后就可以间接访问了,实践起来很简单,但是说起来比较复杂而且难理解,建议你看一下网上的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询