2009-05-15 14 views
7

मैं के रूप में एक editbox बनाया है:हम संपादन बॉक्स में पाठ को लंबवत रूप से कैसे संरेखित कर सकते हैं?

m_EditWnd.Create(m_hWnd, rect, NULL, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | 
            WS_OVERLAPPED | WS_VISIBLE, 
       WS_EX_CLIENTEDGE | WS_EX_LEFT | WS_EX_LTRREADING); 

वहाँ क्षैतिज पाठ संरेखण के लिए ES_CENTER के रूप में क्षैतिज संरेखण के लिए एक शैली है, लेकिन हम पाठ संरेखित कर सकते हैं लंबवत रूप से केंद्रित?

उत्तर

0

जहां तक ​​मुझे पता है, यह संभव नहीं है। लेकिन आप इसे संभव बनाने के लिए अपने नियंत्रण को लागू कर सकते हैं।

this article पर एक नज़र डालें।

उम्मीद है कि यह मदद करता है।

बीटीडब्ल्यू, यह सवाल है कि यह पोस्ट करने से पहले Google के लिए योग्य है। आप वेब पर पहले से ही इस तरह की चीजें पा सकते हैं।

+6

वास्तव में, है। हम चाहते हैं कि स्टैक ओवरफ्लो प्रोग्रामिंग के "विकिपीडिया" के सभी प्रोग्रामिंग ज्ञान की व्यापक और गहरी रिपोजिटरी बन जाए। –

+0

मैंने नहीं कहा है कि वह इस पृष्ठ में अपना प्रश्न पोस्ट नहीं कर सकता है। यहां तक ​​कि मुझे लगता है कि मैंने उसे अपनी समस्या का समाधान करने के लिए एक अच्छा संकेत दिया है। लेकिन मुझे सच में लगता है कि एक प्रश्न पूछने में कोई बात नहीं है जो पहले से ही सौ बार जवाब दे चुका है। मुझे प्रतिष्ठा की परवाह नहीं है ... मैंने बस इस साइट को पढ़ा क्योंकि मैं इसका आनंद लेता हूं और अपना ज्ञान सुधारने में मेरी सहायता करता हूं। लेकिन मुझे सच में लगता है कि मैं यहां एक नकारात्मक वोट के लायक नहीं हूं। –

+0

स्टैक ओवरव्लो पॉडकैट # 53 को सुनें, जेफ और जोएल एक श्रोता क्यूसेटियन का जवाब देते हैं कि हम सभी प्रश्न पूछना चाहते हैं, इसलिए हम मूल प्रश्नों से विशेषज्ञ विषय वस्तु तक ज्ञान का एक उपयोगी शरीर विकसित कर सकते हैं। –

6

यहां कक्षा कि CEdit विरासत और ऊर्ध्वाधर संरेखण गूगल करने योग्य सवाल पूछ अत्यधिक प्रोत्साहित किया जाता अनुमति देता है

/// HEADER ////////////////////////////////////////// 

class CEditVC : public CEdit 
{ 
public: 
    CEditVC(); 

protected: 
    CRect m_rectNCBottom; 
    CRect m_rectNCTop; 

public: 
    virtual ~CEditVC(); 

protected: 
    afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp); 
    afx_msg void OnNcPaint(); 
    afx_msg UINT OnGetDlgCode(); 

    DECLARE_MESSAGE_MAP() 
}; 

/// IMPLEMENTATION ///////////////////////////////////////// 

CEditVC::CEditVC() 
    : m_rectNCBottom(0, 0, 0, 0) 
    , m_rectNCTop(0, 0, 0, 0) 
{ 
} 

CEditVC::~CEditVC() 
{ 
} 

BEGIN_MESSAGE_MAP(CEditVC, CEdit) 
    ON_WM_NCCALCSIZE() 
    ON_WM_NCPAINT() 
    ON_WM_GETDLGCODE() 
END_MESSAGE_MAP() 

void CEditVC::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{ 
    CRect rectWnd, rectClient; 

    //calculate client area height needed for a font 
    CFont *pFont = GetFont(); 
    CRect rectText; 
    rectText.SetRectEmpty(); 

    CDC *pDC = GetDC(); 

    CFont *pOld = pDC->SelectObject(pFont); 
    pDC->DrawText("Ky", rectText, DT_CALCRECT | DT_LEFT); 
    UINT uiVClientHeight = rectText.Height(); 

    pDC->SelectObject(pOld); 
    ReleaseDC(pDC); 

    //calculate NC area to center text. 

    GetClientRect(rectClient); 
    GetWindowRect(rectWnd); 

    ClientToScreen(rectClient); 

    UINT uiCenterOffset = (rectClient.Height() - uiVClientHeight)/2; 
    UINT uiCY = (rectWnd.Height() - rectClient.Height())/2; 
    UINT uiCX = (rectWnd.Width() - rectClient.Width())/2; 

    rectWnd.OffsetRect(-rectWnd.left, -rectWnd.top); 
    m_rectNCTop = rectWnd; 

    m_rectNCTop.DeflateRect(uiCX, uiCY, uiCX, uiCenterOffset + uiVClientHeight + uiCY); 

    m_rectNCBottom = rectWnd; 

    m_rectNCBottom.DeflateRect(uiCX, uiCenterOffset + uiVClientHeight + uiCY, uiCX, uiCY); 

    lpncsp->rgrc[0].top +=uiCenterOffset; 
    lpncsp->rgrc[0].bottom -= uiCenterOffset; 

    lpncsp->rgrc[0].left +=uiCX; 
    lpncsp->rgrc[0].right -= uiCY; 

} 

void CEditVC::OnNcPaint() 
{ 
    Default(); 

    CWindowDC dc(this); 
    CBrush Brush(GetSysColor(COLOR_WINDOW)); 

    dc.FillRect(m_rectNCBottom, &Brush); 
    dc.FillRect(m_rectNCTop, &Brush); 
} 

UINT CEditVC::OnGetDlgCode() 
{ 
    if(m_rectNCTop.IsRectEmpty()) 
    { 
     SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED); 
    } 

    return CEdit::OnGetDlgCode(); 
} 
संबंधित मुद्दे