在对话框程序中,我动态创建了一个static控件
Cstatic *pstatic;
pstatic->Create("static",WS_CHILD|WS_VISIBLE|SS_NOTIFY,CRect(220,20,280,40),this,NULL);
我想在鼠标点击它后,可以改一下样式,来表明它被选中了,也就是类似资源编辑器里那样的选中状态,可是我用
pstatic->ModifyStyleEx(0, WS_EX_CLIENTEDGE); 
//WS_EX_CLIENTEDGE   Specifies that a window has a 3D look — that is, a border with a sunken edge.
pstatic->->Invalidate(FALSE);
可是运行完一点效果都没有,请大家赐教了

解决方案 »

  1.   

    用GetWondowLong和SetWindowLong来做修改
      

  2.   

    你的“鼠标点击它”是如何实现的?也就是说你的Modify函数在哪里调用的?是否执行到了?
      

  3.   

    可能是我消息映射的问题,我的总体目标是,建立一个类似vc的资源编辑器的编辑窗口,里面要用静态文本控件
    ,但是我需要知道在窗口中鼠标点击了那个文本控件,因此我派生了自己的类,里面的m_id记录id
    class CEditStatic : public CStatic
    {
    // Construction
    public:
    CEditStatic(); CString caption; int m_id;
    CRect rect;
    int font;
           afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    }void CEditStatic::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    //ModifyStyle(NULL,WS_BORDER);
    ::PostMessage(::FindWindow(NULL,"DATALIST"),WM_GETSELECTEDEDITSTATICID,(WPARAM)m_id,0);
    CStatic::OnLButtonUp(nFlags, point);
    }在对话框程序中,我动态创建了一个static控件
    Cstatic *pstatic;
    pstatic->Create("static",WS_CHILD &brvbarWS_VISIBLE &brvbarSS_NOTIFY,CRect(220,20,280,40),this,NULL); 在对话框程序的自定义消息及(WM_GETSELECTEDEDITSTATICID)中我
    pstatic->ModifyStyle(0,WS_BORDER);
    pstatic->Invalidate(FALSE);问题是我点击她没有反应,但是我在响应鼠标移动的时候,才出现了效果
    void CDatalistDlg::OnMouseMove(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    if ((nFlags==MK_LBUTTON) && m_changeeditstaticrent)
    {
    if (m_SelectedEditstaticID<0)
    //m_SelectedEditstaticID为控件在鼠标抬起的时候发过来的id消息值 {
    MessageBox("选择控件");
    return ;

    } CRect temprect=pstatic->rect;
    pstatic->MoveWindow(CRect(temprect.TopLeft(),point)); } CDialog::OnMouseMove(nFlags, point);
    }这是怎么回事?
    大侠帮忙看看我的程序吧,有什么好的建议吗?