⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01_9_16_2.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 4 页
字号:
//Set title for dialog's push button control.</td></tr></table><table width=100% ><tr><td class=a14>
GetDigitem (IDC_BUTTON) —> SetWindowText (_T ("Button new title ") )</td></tr></table><table width=100% ><tr><td class=a14>
如果需要经常修改窗口的标题(注:控件也是窗口),应该考虑使用半文档化的函数AfxSetWindowText。该函数在AFXPRIV.H中说明,在WINUTIL.CPP中实现,在联机帮助中找不到它,它在AFXPRIV.H中半文档化, 在以后发行的MFC中将文档化。</td></tr></table><table width=100% ><tr><td class=a14>
AfxSetWindowText的实现如下:</td></tr></table><table width=100% ><tr><td class=a14>
voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 itn nNewLen= Istrlen (Ipaznew)</td></tr></table><table width=100% ><tr><td class=a14>
 TCHAR szOld [256]</td></tr></table><table width=100% ><tr><td class=a14>
 //fast check to see if text really changes (reduces</td></tr></table><table width=100% ><tr><td class=a14>
flash in the</td></tr></table><table width=100% ><tr><td class=a14>
controls )</td></tr></table><table width=100% ><tr><td class=a14>
 if (nNewLen >_contof (szOld)</td></tr></table><table width=100% ><tr><td class=a14>
|| : : GetWindowText (hWndCrtl, szOld , _countof (szOld) !=nNewLen</td></tr></table><table width=100% ><tr><td class=a14>
|| Istrcmp (szOld , IpszNew)! = 0</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 //change it</td></tr></table><table width=100% ><tr><td class=a14>
 : : SetWindowText(hWndCtrl , IpszNew )</td></tr></table><table width=100% ><tr><td class=a14>
 }</td></tr></table><table width=100% ><tr><td class=a14>
)</td></tr></table>
  <table width=100% >
    <tr> 
      <td class=a14><b> <a name="24">24.如何防止主框窗口在其说明中显示活动的文档名?</a></b></td>
    </tr>
  </table>
  <table width=100% ><tr><td class=a14>
创建主框窗口和MDI子窗口进通常具有FWS_ADDTOTITLE风格位,如果不希望在说明中自动添加文档名, 必须禁止该风格位, 可以使用ClassWizard重置</td></tr></table><table width=100% ><tr><td class=a14>
CWnd: : PreCreateWindow并关闭FWS_ADDTOTITLE风格。</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT&cs)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 //Turn off FWS_ADDTOTITLE in main frame .</td></tr></table><table width=100% ><tr><td class=a14>
 cs.styel & = ~FWS_ADDTOTITLE  </td></tr></table><table width=100% ><tr><td class=a14>
 return CMDIFrameWnd : : PreCreateWindow (cs )</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
关闭MDI子窗口的FWS _ADDTOTITLE风格将创建一个具有空标题的窗口,可以调用CWnd: : SetWindowText来设置标题。记住自己设置标题时要遵循接口风格指南。</td></tr></table>
  <table width=100% >
    <tr> 
      <td class=a14><b> <a name="25">25. 如何用位图显示下压按钮?</a></b></td>
    </tr>
  </table>
  <table width=100% ><tr><td class=a14>
Windows 95按钮有几处新的创建风格,尤其是BS_BITMAP和BS_ICON,要想具有位图按钮,创建按钮和调用CButton : : SetBitmap或CButton : : SetIcon时要指定BS_BITMAP或BS_ICON风格。</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
首先,设置按钮的图标属性。然后,当对话初始化时调用CButton: : SetIcon。注意:下例用图标代替位图,使用位图时要小心,因为不知道背景所有的颜色——并非每个人都使用浅灰色。</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CSampleDlg : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
CDialog : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//set the images for the push buttons .</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CSampleDlg : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
CDialog : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//set the images for the push buttons .</td></tr></table><table width=100% ><tr><td class=a14>
m_wndButton1.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION1))</td></tr></table><table width=100% ><tr><td class=a14>
m_wndButton2.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION2))</td></tr></table><table width=100% ><tr><td class=a14>
m_wndButton3.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION3))</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 return TRUE</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table>
  <table width=100% >
    <tr> 
      <td class=a14><b> <a name="26">26.如何获取有关窗口正在处理的当前消息的信息?</a></b></td>
    </tr>
  </table>
  <table width=100% ><tr><td class=a14>
调用CWnd: : GetCurrentMessage可以获取一个MSG指针。例如,可以使用ClassWizard将几个菜单项处理程序映射到一个函数中,然后调用GetCurrentMessage来确定所选中的菜单项。</td></tr></table><table width=100% ><tr><td class=a14>
viod CMainFrame : : OnCommmonMenuHandler ( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 //Display selected menu item in debug window .</td></tr></table><table width=100% ><tr><td class=a14>
 TRACE ("Menu item %u was selected . \n" ,GetCruuentMessage ( ) —> wParam )</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table>
  <table width=100% >
    <tr> 
      <td class=a14><b><a name="27"> 27.如何创建一个不规则形状的窗口?</a></b></td>
    </tr>
  </table>
  <table width=100% ><tr><td class=a14>
可以使用新的SDK函数SetWindowRgn。该函数将绘画和鼠标消息限定在窗口的一个指定的区域,实际上使窗口成为指定的不规则形状。 使用AppWizard创建一个基于对的应用程序并使用资源编辑器从主对话资源中删除所在的缺省控件、标题以及边界。</td></tr></table><table width=100% ><tr><td class=a14>
给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。</td></tr></table><table width=100% ><tr><td class=a14>
Class CRoundDlg : public CDialog</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 …</td></tr></table><table width=100% ><tr><td class=a14>
private :</td></tr></table><table width=100% ><tr><td class=a14>
 Crgn m_rgn : // window region</td></tr></table><table width=100% ><tr><td class=a14>
 …</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CRoundDlg : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 CDialog : : OnInitDialog ( )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 //Get size of dialog .</td></tr></table><table width=100% ><tr><td class=a14>
 CRect rcDialog</td></tr></table><table width=100% ><tr><td class=a14>
 GetClientRect (rcDialog )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 // Create region and assign to window .</td></tr></table><table width=100% ><tr><td class=a14>
 m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width( ) , rcDialog.Height ( ) )</td></tr></table><table width=100% ><tr><td class=a14>
 SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn ,TRUE )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 return TRUE</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
通过建立区域和调用SetWindowRgn,已经建立一个不规则形状的窗口,下面的例子程序是修改OnPaint函数使窗口形状看起来象一个球形体。</td></tr></table><table width=100% ><tr><td class=a14>
voik CRoundDlg : : OnPaint ( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 CPaintDC de (this) // device context for painting</td></tr></table><table width=100% ><tr><td class=a14>
.</td></tr></table><table width=100% ><tr><td class=a14>
 //draw ellipse with out any border</td></tr></table><table width=100% ><tr><td class=a14>
 dc. SelecStockObject (NULL_PEN)</td></tr></table><table width=100% ><tr><td class=a14>
 //get the RGB colour components of the sphere color</td></tr></table><table width=100% ><tr><td class=a14>
 COLORREF color= RGB( 0 , 0 , 255)</td></tr></table><table width=100% ><tr><td class=a14>
 BYTE byRed =GetRValue (color)</td></tr></table><table width=100% ><tr><td class=a14>
 BYTE byGreen = GetGValue (color)</td></tr></table><table width=100% ><tr><td class=a14>
 BYTE byBlue = GetBValue (color)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 // get the size of the view window</td></tr></table><table width=100% ><tr><td class=a14>
 Crect rect</td></tr></table><table width=100% ><tr><td class=a14>
 GetClientRect (rect)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 // get minimun number of units</td></tr></table><table width=100% ><tr><td class=a14>
 int nUnits =min (rect.right , rect.bottom )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 //calculate he horiaontal and vertical step size</td></tr></table><table width=100% ><tr><td class=a14>
 float fltStepHorz = (float) rect.right /nUnits</td></tr></table><table width=100% ><tr><td class=a14>
 float fltStepVert = (float) rect.bottom /nUnits</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 int nEllipse = nUnits/3 // calculate how many to</td></tr></table><table width=100% ><tr><td class=a14>
draw</td></tr></table><table width=100% ><tr><td class=a14>
 int nIndex</td></tr></table><table width=100% ><tr><td class=a14>
// current ellipse that is being draw</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 CBrush brush</td></tr></table><table width=100% ><tr><td class=a14>
// bursh used for ellipse fill color</td></tr></table><table width=100% ><tr><td class=a14>
 CBrush *pBrushOld // previous</td></tr></table><table width=100% ><tr><td class=a14>
brush that was selected into dc</td></tr></table><table width=100% ><tr><td class=a14>
 //draw ellipse , gradually moving towards upper-right</td></tr></table><table width=100% ><tr><td class=a14>
corner</td></tr></table><table width=100% ><tr><td class=a14>
 for (nIndex = 0 nIndes < + nEllipse nIndes++)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 //creat solid brush</td></tr></table><table width=100% ><tr><td class=a14>
 brush . CreatSolidBrush (RGB ( ( (nIndex*byRed ) /nEllipse ).</td></tr></table><table width=100% ><tr><td class=a14>
( ( nIndex * byGreen ) /nEllipse ), ( (nIndex * byBlue)</td></tr></table><table width=100% ><tr><td class=a14>
/nEllipse ) ) )</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 //select brush into dc</td></tr></table><table width=100% ><tr><td class=a14>
 pBrushOld= dc .SelectObject (&brhsh)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 //draw ellipse</td></tr></table><table width=100% ><tr><td class=a14>
 dc .Ellipse ( (int) fltStepHorz * 2, (int) fltStepVert * nIndex ,</td></tr></table><table width=100% ><tr><td class=a14>
 rect. right -( (int) fltStepHorz * nIndex )+ 1,</td></tr></table><table width=100% ><tr><td class=a14>
 rect . bottom -( (int) fltStepVert * (nIndex *2) ) +1)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 //delete the brush</td></tr></table><table width=100% ><tr><td class=a14>
 brush.DelecteObject ( )</td></tr></table><table width=100% ><tr><td class=a14>
 }</td></tr></table><table width=100% ><tr><td class=a14>
 }</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
最后,处理WM_NCHITTEST消息,使当击打窗口的任何位置时能移动窗口。</td></tr></table><table width=100% ><tr><td class=a14>
UINT CRoundDlg : : OnNchitTest (Cpoint point )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
 //Let user move window by clickign anywhere on thewindow .</td></tr></table><table width=100% ><tr><td class=a14>
 UINT nHitTest = CDialog : : OnNcHitTest (point)</td></tr></table><table width=100% ><tr><td class=a14>
 rerurn (nHitTest = = HTCLIENT)? HTCAPTION: nHitTest</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 }</td></tr></table>
  <table width=100% >
    <tr> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -