标  题: 如何计算一个串的大小                             
发信人: Pacific (无情~~~Nolove), 信区: VisualC
发信站: BBS 水木清华站 (Fri Oct 16 17:22:03 1998)


    函数CDC:: Det text Extent 根据当前选择的字体计算一个串的高度和宽             
度。如果使用的不是系统字体而是其他字体,则在调用GetTextExtent之前将字            
体选进设备上下文中是很重要的,否则计算高度和宽度时将依据系统字体,由此           
得出的结果当然是不正确的。下述样板程序当改变下压按钮的标题时动态调整按           
钮的大小,按钮的大小由按钮的字体和标题的大小而定。响应消息WM_SETTEXT时           
调用OnSetText,该消息使用ON_MESSAE宏指令定义的用户自定义消息。                   
                                                                                 
LRESULT CMyButton:: OnSettext (WPARAM wParam, LPARAM lParam)                     
{                                                                                
     //Pass message to window procedure.                                         
     LRESULT bResult=CallWindowProc (*GetSuperWndProcAddr (),                    
         m_hWnd, GetCurrentMessage () ->message,wParam,lParam);                  
     //Get title of push button.                                                 
     CString strTitle;                                                           
     GetWindowText (strTitle);                                                   
                                                                                 
     //Select current font into device context.                                  
     CDC* pDC=GetDc ();                                                          
     CFont*pFont=GetFont ();                                                     
     CFont*pOldFont=pDC->SelectObject (pFont);                                   
                                                                                 
     //Calculate size of title.                                                  
     CSize size=pDC->GetTextExent (strTitle,strTitle.GetLength ());              
                                                                                 
     //Adjust the button's size based on its title.                              
     //Add a 5-pixel border around the button.                                   
     SetWindowPos (NULL, 0, 0, size.cx+10, size.cy+10,                           
         SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);                            
     //Clean up.                                                                 
     pDC->SelectFont (pOldFont);                                                 
     ReleaseDC (pDC);                                                            
                                                                                 
     return bResult;                                                             
}                                                                                
                                                                                 

--
        老鸟有交待,中鸟要等待,菜鸟要忍耐。
        老鸟级功夫:吹牛、聊天、玩MUD 、发呆。
        中鸟级功夫:睡觉、灌水、玩游戏、NT&VC。
        菜鸟级功夫:学习、泡妞、玩篮球、And so on

        My E-Mail: Nolove@263.net

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yazhou.bbs@bbs.net.t]
※ 修改:.fzx 于 Aug  9 16:51:19 修改本文.[FROM: heart.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.129毫秒