//设定窗口类的详细信息
WNDCLASSEX myWndClassEx;//记录窗口详细信息的结构
myWndClassEx.cbSize=sizeof(WNDCLASSEX);//结构大小
myWndClassEx.style=CS_HREDRAW|CS_VREDRAW;//窗体风格
......Windows中还有大量类似的数据结构,在使用的时候,必须首先指定数据结构的大小。我有点不明白:
在定义变量的时候,不是要分配内存吗(也就知道大小了啊),怎么还要显示指定数据结构的大小啊?

解决方案 »

  1.   

    1、你是说:不要下面的的这句话也行?
    myWndClassEx.cbSize=sizeof(WNDCLASSEX);//结构大小
    好像不行呢,我再去试一下。2、怎么扩展应用?你是说将来MicroSoft也许会重新定义这个数据结构?我不太明白,能不能举个例子呢。
      

  2.   

    1、不要那句话不行呢。2、比如我有个数据结构struct MYSTRUCT 
    {
        DWORD nSize;//本数据结构的大小
        int a;
        double b;
    };能不能用它来演示一下怎么扩展应用呢?
      

  3.   

    Windows中还有大量类似的数据结构,在使用的时候,必须首先指定数据结构的大小
    不对是赋初值
      

  4.   

    struct MYSTRUCT 
    {
        DWORD nSize;//本数据结构的大小
        int a;
        double b;
    };
    我可以以后要给它加一个bool flag;
    struct MYSTRUCT 
    {
        DWORD nSize;//本数据结构的大小
        int a;
        double b;
        bool flag;
    };
    bool myfunc(MYSTRUCT* a)
    {
        if (a->nSize==16)
        {
        //此结构是老的结构...
        }
        if(a->nSize=17)
        {
           //此结构是新的结构...
           a->flag=true;
        }}
      

  5.   

    这两个MYSTRUCT可以同时用吗?不会出现重复定义的问题?
      

  6.   

    TO:kingcom_xu() 
    不好意思,我没有明白。你能说得更清楚一点吗?你的两个定义都放在什么地方呢?
      

  7.   

    TO:kingcom_xu() 
    小弟先谢过了。
      

  8.   

    可是这样一来:
    if (a->nSize==16)
        {
        //此结构是老的结构...
        }
    这种情况还会出现吗?是不是这样一个意思:原来的程序是这样写的
    bool myfunc(MYSTRUCT* a)
    {
        if (a->nSize==16)
        {
             //Do Something;
        }
    }
    修改定义以后,我们不希望动原来的代码(万一哪天要改回去呢?),
    于是,只需要加上一段代码:就成了:
    bool myfunc(MYSTRUCT* a)
    {
        if (a->nSize==16)
        {
           //Do Something
        }    //这里是新加的代码
        if(a->nSize=17)
        {
           //做我们现在想做的事情;
        }}这样达到扩展应用的目的?