我是这样创建子窗口的:
1. 创建好父窗口.
2. 循环创建10个子窗口好像不能修改子窗口的风格了还有, 怎么知道一个子窗口被点击了, 不管是右击还是左击? 只要是鼠标点击了子窗口的任何地方,包括按钮,  怎么得到这些消息?谢谢

解决方案 »

  1.   

    其实我的目的是这样的点击一个子窗口, 就将子窗口的风格改成(下压式的风格), 让别人一看就知道这个窗口是当前窗口问题是, 如果鼠标直接在子窗口的按钮上点击一下, 子窗口不能获得消息还有, 子窗口的风格怎么修改成 WS_EX_CLIENTEDGE 风格? 我怎么修改了, 还是没有效果?
      

  2.   

    怎么不行了?代码贴出来看看吧!“还有, 怎么知道一个子窗口被点击了, 不管是右击还是左击? 只要是鼠标点击了子窗口的任何地方,包括按钮,  怎么得到这些消息?“
    ——可以在子窗口中加一个变量,表示子窗口的编号,然后在子窗口中响应WM_MOUSEACTIVATE消息就行了:class CMyChildWnd
    {
     ...
    int  m_nChildNum;    //子窗口编号
    ...
    }/////////////创建子窗口//////////////
    for ( int i = 0; i < 10; i++ )
    {
        生成子窗口pChild;
       pChild->m_nChildNum = i;
    ...
    }
    在子窗口中响应WM_MOUSEACTIVATE消息:
    CMyChildWnd::OnMouseActivate
    {
        CString str;
        str.Format( "the %d childwnd is clicked!", m_nChildNum );
        AfxMessageBox( str );
        ...
    }
      

  3.   

    common_man(谢安王导) :
    哈哈,对啊, 我看了好久的消息, 怎么没有看到这个,呵呵, 谢谢, 不过窗口风格,好像...  我试试看能不能修改, 谢谢
      

  4.   

    int CCtrlDlg::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) 
    {
    ModifyStyleEx(NULL, WS_EX_CLIENTEDGE);
    return CDialog::OnMouseActivate(pDesktopWnd, nHitTest, message);
    }怎么风格没有变化? 我的窗口一开始就没有边框的, 属性选择的是NONE? 我用错办法了吗?
      

  5.   

    SetWindowLong(
      HWND hWnd,       // handle to window
      int nIndex,      // offset of value to set
      LONG dwNewLong)
    这个比setexstyle有效
      

  6.   

    common_man(谢安王导):
    我知道了, 要设标志, 哈哈, 谢谢! 
      

  7.   

    SetWindowLong,SetWindowLongPtr,注册子窗口类,在该类的回掉函数中处理相应的消息就应该可以实现你的要求了