VC建立窗体的时候,为什么就发生WM_SIZE事件?能不能跳过

解决方案 »

  1.   

    好象不能,如果你在SIZE的事件被提前触发,可以设置一标志解决!
      

  2.   

    创建窗体时就会涉及到设置窗口大小的操作,所以会引发WM_SIZE消息。
    你可以在发生该消息后进行判断,做自己的处理。
      

  3.   

    你设置一个私有布尔变量进行判断不就可以了?
    1、首先把你的布尔变量在构造函数的初始化成员列表中初始化为false
    2、在你要执行时,把此变量设为true
    3、然后在OnSize函数中进行判断,为true时才执行你的代码;
    void CEditCursorPosDlg::OnSize(UINT nType, int cx, int cy) 
    {
    if (CanRun)
    {
     AfxMessageBox("现在执行");
    }
    CDialog::OnSize(nType, cx, cy);


    }
      

  4.   

    你拦截WM_ACTIVATE消息就可以了,你只要在此处理函数中,重新设置标志位即可。
      

  5.   

    如果你是要在 WM_SIZE 里修改某个窗体的大小的话可以这样
    if (IsWindow(m_wndCtrl.m_hwnd))
    {
      ...
    }
    就不会在打开程序时报错
      

  6.   

    在OnSize中加入if(cx == 0 || cy == 0)
       return TRUE;
      

  7.   

    在对话框的构造函数中设置 finishedinit=false;
    在 CDialog::OnInitDialog() 之后 finishedinit=true;
    在 OnSize 中
    if(!finishedinit)
     return;do something;
      

  8.   

    if (m_msglist.m_hWnd>0)
    {
    ....//list size处理
    }
      

  9.   

    窗体大小改变的时候就会发送WM_SIZE消息,你可以在OnSize()中直接Return;