我想在Dialog上的一个static edit控件上显示文本 Cstring str; 主要是想能让str 显示在我想定义的位置 ,比如50,50之类的,static text里可以实现么?

解决方案 »

  1.   

    这个可能要你重载一下static 控件,将里面的OnEraseBkgnd重载后。直接在里面return true;
      

  2.   

    给static text设置一个ID,默认是IDC_STATIC?改成IDC_STATIC,然后右击,添加变量,添加一个控件变量m_static,在代码里,使用m_static.SetWindowText(str);就可以了。
      

  3.   

    那你的这个问题,应该是要自定义m_static的位置了。
    m_static.MoveWindow(...);
    爱移动到哪里,就移动到哪里。
      

  4.   

    从CStatic派生一个类Cxxxx,在Cxxxx的OnPaint中用:
    dc.TextOut(GridStartX-GridWidth/3,GridStartY+size.cy/2+GridHeight*10,xUnit);
      

  5.   

    MoveWindow 是移动整个STATIC TEXT? 还是只移动我的 字符串? 
      

  6.   


    Static控件按默认的ID不受你控制
    你要修改成其他的ID名
    然后就 GetDlgItem(IDC_STATIC_**)操作这个static控件
    修改一下他的属性,
    然后MoveWindow 放置它在 对话框内的位置.但还是采用自写 控件的方法最好。
      

  7.   

    用 movewindow 有边框,效果很不好啊 
      

  8.   

    void CNewStatic::SetWindowText(CString strText)
    {
    m_strText=strText;
    Invalidate();
    }void CNewStatic::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    dc.SetBkMode(TRANSPARENT);
    // TODO: Add your message handler code here
    CRect rect;
    GetClientRect(&rect);
    CSize szText;
    szText=dc.GetTextExtent(m_strText);
    dc.TextOut((rect.Width()-szText.cx)/2,(rect.Height()-szText.cy)/2,m_strText);
    // Do not call CStatic::OnPaint() for painting messages
    }从CStatic派生出CNewStaic,加入函数SetWindowText覆盖原函数,再加入WM_PAINT消息响应函数
    然后参考上面的...
      

  9.   

    class CNewStatic : public CStatic
    {
    // Construction
    public:
    CNewStatic();// Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CNewStatic)
    //}}AFX_VIRTUAL// Implementation
    public:
    void SetWindowText(CString strText,CPoint point);
    void SetWindowText(CString strText);
    virtual ~CNewStatic(); // Generated message map functions
    protected:
    CPoint m_pos;
    CString m_strText;
    //{{AFX_MSG(CNewStatic)
    afx_msg void OnPaint();
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };头文件...
      

  10.   

    想问下lz:你的static控件是特制的么?如果是只用于显示一行文字,而且底色和背景窗口一样的话,建议使用MoveWindow移动static控件来达到目的。注意要设置其ID为非默认值,然后用GetDlgItem()获取指针或者用向导建立其关联变量进行MoveWindow操作。
    如果lz应要对控件本身进行修改,则需要重写控件的OnPaint()函数。6L的代码应该没大问题。使用PaintDC或者WindowDC都行。
      

  11.   

    其实楼主的意思是想去掉STATIC的边框,然后MOVEWINDOW到他想要显示的地方.用STATIC控件当然可以,只要去掉它的边框属性就可以了其实直接在对话框的ONPAINT里面用
    dc.TextOut(5050,m_strText); 
    就可以了,不需要用控件
      

  12.   

    我上传个具体的图片,要不大家不好理解
    apple 我想显示在自己想在的位置(IDC_STATIC_WORD之内),我主要是想实现这个。