环境:VC8, SDK (我不会MFC或.NET)edit控件的第一行文字是紧靠窗口上沿的。这在单行edit控件上显的尤为难看,用什么方法让其能垂直居中呢?注明下我求的是垂直居中方法,而非水平居中。另外我不想把控件高度减的和文字一样高。请大家赐教!尽可能给出代码,谢谢!

解决方案 »

  1.   

    Edit 标准控件没这个功能, static 才有垂直居中, 能否换用static ?
      

  2.   

    单行不可能垂直居中的。单行的高度只是比字符的高度多一点,就算你把它拉高了,它也是单行edit控件。你可以用多行,代替单行。
      

  3.   

    在设计CEdit控件时,右键点“属性”选“Styles”页面,有个组合下拉框“Align text”,一般是“Left”,把它选项设为“Centered”,就行了。
      

  4.   

    感谢各位回贴,小弟仍有疑问:
    一楼您好:换static我怎么输入并获取文字呢?
    二楼您好:我就是要单行,就像搜索网站的输入栏那样,多行我试过,先不说得子类化窗口过程以处理回车键,另外其文字距上边也就比单行编辑框多那么一两个像素而已,效果不理想。三楼您好:我求的是垂直居中方法,而非水平居中四楼您好:您代码是MFC下的吧,有没有API代码呢?
      

  5.   

    自绘使用 DrawText 函数,最后一个参数指明 DT_VCENTER 标记
      

  6.   


    edit 的相应函数可以通过
    SendMessage 函数消息是 EN_开头的一些消息,MSDN 应该有说明
      

  7.   

    感谢Joephia !他的代码我改成了API形式并获得成功!我的代码更简单,就是让文字距编辑框上沿有4个像素距离。当然可以多写几行代码以让这个值更灵活些。RECT rect ;GetClientRect(hwndEdit,rect);
    OffsetRect(&rect,0,4);
    SendMessage(hwndEdit,EM_SETRECT,0,(LPARAM)&rect);呵呵,真没想到这么简单!以前在网上搜过也没找到一个解决方法,更有人称要完全自绘才行,真是吓坏我也^^ ,再次感谢各位的回贴,感谢Joephia !结贴散分,网友还有什么问题意见就请联系我QQ吧:184263203 。