先声明,本人C#过来学vc的,问题有些小白~
我拖了一个按钮放到窗口上(dialog类型窗口),如果不连接上变量,怎么在哪也找不到按钮的相关函数,对象?
除了在resource.h上发现它的Id.也不知程序运行时是怎样创建这个按钮的,怎样把它摆在哪个地方的,起码它应该调用createwindow函数吧,但是在哪?我怎么找来找去找不到呢?它的窗口函数,我知道被封装了起来,但怎么找不到? 哪位大大可以给俺解释一下这个中的原理不?
 就是按钮是怎样在窗口上生成和显示出来的?创建按钮时调用的相关函数在哪个文件?怎样设置这个按钮的相关性质?比如大小?是用代码改,而不是去可视化地拖动改变大小。
我知道如果将一个control类型的变量与之相联,一切就可以很简单,但是我的疑问正是在这里,即如果我不连接一个control变量给这个按钮,我似乎就感觉不到它的存在了,在文件里找不到一点跟它相关的东西。我想改变一下它的属性似乎也无从下手。
mfc的封装真是让人昏 ,我直接用api做得多清晰直接啊,C#的也比较容易理解说多了,烦达人指点。

解决方案 »

  1.   

    一开始生成的对话框其实是一个资源而已。
    首先给这个对话框生成一个类。
    打开ClassWizard对话框,然后里面会有用到的控件,可以选择绑定成成员变量。
    然后搞好DDV、DDX,就OK了。对话框的建立是由CDialog类调用DialogBox()API创建的,而DialogBox()会读取资源,然后调用CreateWindow()。改变控件既可以在资源编辑器修改,也可以使用代码修改,比如MoveWindow()MFC对API的封装很浅,基本就是用this代替了Handle,少一个参数而已。
      

  2.   

    你打开.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 
      

  3.   

    MFC中的空间在没有关联一个变量,或者被特定的指针引用时,只是一个资源,不会起到任何作用。
    更简单的说一下:如果你在对话框上加了一个按钮,这时,程序中指挥修改“*.rc”文件和“resources.h”文件。
      

  4.   


    但是我想知道,这个按钮是怎样被画出来的,它能显示出来肯定要最终要调用createwindow这个函数的吧?
    我就想知道这个函数在哪,在什么时候被调用的?
    而不是凭空就出来个按钮大大们,行行好,我实在找不到。
      

  5.   

    不连接Control变量 可通过GetDlgItem获取控件指针 从而控制它