拖放按钮的问题

liaomingdong 2009-10-29 01:28:13
先声明,本人C#过来学vc的,问题有些小白~
我拖了一个按钮放到窗口上(dialog类型窗口),如果不连接上变量,怎么在哪也找不到按钮的相关函数,对象?
除了在resource.h上发现它的Id.也不知程序运行时是怎样创建这个按钮的,怎样把它摆在哪个地方的,起码它应该调用createwindow函数吧,但是在哪?我怎么找来找去找不到呢?它的窗口函数,我知道被封装了起来,但怎么找不到?

哪位大大可以给俺解释一下这个中的原理不?
就是按钮是怎样在窗口上生成和显示出来的?创建按钮时调用的相关函数在哪个文件?怎样设置这个按钮的相关性质?比如大小?是用代码改,而不是去可视化地拖动改变大小。


我知道如果将一个control类型的变量与之相联,一切就可以很简单,但是我的疑问正是在这里,即如果我不连接一个control变量给这个按钮,我似乎就感觉不到它的存在了,在文件里找不到一点跟它相关的东西。我想改变一下它的属性似乎也无从下手。


mfc的封装真是让人昏 ,我直接用api做得多清晰直接啊,C#的也比较容易理解。。。说多了,烦达人指点。
...全文
58 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaomingdong 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qcb_163 的回复:]
MFC中的空间在没有关联一个变量,或者被特定的指针引用时,只是一个资源,不会起到任何作用。
更简单的说一下:如果你在对话框上加了一个按钮,这时,程序中指挥修改“*.rc”文件和“resources.h”文件。
[/Quote]

但是我想知道,这个按钮是怎样被画出来的,它能显示出来肯定要最终要调用createwindow这个函数的吧?
我就想知道这个函数在哪,在什么时候被调用的?
而不是凭空就出来个按钮。。。大大们,行行好,我实在找不到。
  • 打赏
  • 举报
回复
不连接Control变量 可通过GetDlgItem获取控件指针 从而控制它
qiaochuanbiao 2009-10-29
  • 打赏
  • 举报
回复
MFC中的空间在没有关联一个变量,或者被特定的指针引用时,只是一个资源,不会起到任何作用。
更简单的说一下:如果你在对话框上加了一个按钮,这时,程序中指挥修改“*.rc”文件和“resources.h”文件。
csndnxxiaoyaozi 2009-10-29
  • 打赏
  • 举报
回复
我也 遇到类似的问题 不怎么怎么解决
fishion 2009-10-29
  • 打赏
  • 举报
回复
你打开.rc文件就能看到以下大概的按钮创建的属性
IDD_DLG1_DIALOG DIALOGEX 0, 0, 499, 310
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
FONT 9, "宋体"
BEGIN
DEFPUSHBUTTON "确定",IDOK,266,53,50,14
PUSHBUTTON "取消",IDCANCEL,266,69,50,14
PUSHBUTTON "Button1",IDC_BUTTON1,442,131,50,14
CONTROL
liaomingdong 2009-10-29
  • 打赏
  • 举报
回复
应该是比较简单的问题才对啊。
liaomingdong 2009-10-29
  • 打赏
  • 举报
回复
囧,没人来回答了吗?
threenewbee 2009-10-29
  • 打赏
  • 举报
回复
一开始生成的对话框其实是一个资源而已。
首先给这个对话框生成一个类。
打开ClassWizard对话框,然后里面会有用到的控件,可以选择绑定成成员变量。
然后搞好DDV、DDX,就OK了。

对话框的建立是由CDialog类调用DialogBox()API创建的,而DialogBox()会读取资源,然后调用CreateWindow()。

改变控件既可以在资源编辑器修改,也可以使用代码修改,比如MoveWindow()

MFC对API的封装很浅,基本就是用this代替了Handle,少一个参数而已。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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