国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
編程中國(guó) - 積累的VC編程小技巧之編輯框

 

1.如何讓對(duì)話(huà)框中的編輯框接收對(duì)話(huà)框的消息

////////////////////////////////////////////////
// 如何讓對(duì)話(huà)框中的CEdit控件類(lèi)接收對(duì)話(huà)框的消息
////////////////////////////////////////////////
1、在對(duì)話(huà)框中增加一個(gè)ID IDC_EDIT1CEdit1控件
2、通過(guò)ClassWizard 生成一個(gè)基于CEdit的新類(lèi)CMyEdit,
CMyEdit  m_wndEdit;
3、在對(duì)話(huà)框OnInitDialog()中,將m_wndEdit子類(lèi)化,使其能夠接受對(duì)話(huà)框的消息。
m_wndEdit.SubclassDlgItem (IDC_EDIT1,this);

 

2.如何防止密碼被非法獲取?

  [問(wèn)題提出]
    這兩天大家比較專(zhuān)注在獲取Edit密碼框的密碼.在盜取時(shí),我們?nèi)绾畏婪赌?/span>?
  
  [解決方法]
    此方法針對(duì)于通過(guò)SendMessage向此窗口發(fā)送WM_GETTEXTEM_GETLINE消息來(lái)取得密碼.跟我來(lái).
  
  [程序?qū)崿F(xiàn)]
    方法很簡(jiǎn)單,CWnd::DefWindowProc函數(shù)攔截得到的消息(Edit發(fā)的).
    建立名為My的對(duì)話(huà)框工程.建立一個(gè)Edit控件ID=IDC_EDIT1.建一個(gè)新類(lèi)名為CMyProtectEdit,派生于CEdit.
    MyDlg.cpp中聲明全局變量:BOOL g_bIdentity;
    BOOL g_bIdentity;

    MyProtecEdit.cpp:
    extern BOOL g_bIdentity;

    響應(yīng)CMyProtectEditDefWindowProc函數(shù):
    LRESULT CMyProtectEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
       // TODO: Add your specialized code here and/or call the base class
       // 對(duì)Edit的內(nèi)容獲取必須通過(guò)以下兩個(gè)消息之一,不對(duì)其采用默認(rèn)的處理:
       if(( message == WM_GETTEXT) || ( message == EM_GETLINE))
       {   //檢查是否為合法
          if(!g_bIdentity)
          {   //非法獲取,顯示非法信息
             AfxMessageBox(_T("不能讓你看我的密碼,:( !"));
             return 0;
          )
          g_bIdentity = FALSE;//合法獲取
       }
        
       return CEdit::DefWindowProc(message, wParam, lParam);
    }

    然后在MyDlg.cpp
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CGetPasswordDlg)
        // NOTE: the ClassWizard will add DDX and DDV calls here
       if( pDX->m_bSaveAndValidate)
       {
          g_bIdentity = TRUE;
       }      
       //}}AFX_DATA_MAP
    }
    即可.找個(gè)程序(盜取)的試試.

 

3.如何在編輯控件中以追加的方式添入字符?

  [問(wèn)題提出]
    SetDlgItemText可以向Edit控件中輸入字符,發(fā)送更新的消息也可是Edit控件顯示與其關(guān)聯(lián)的變量的值,但若是向已有的Edit字符后追加字符,該如何做?
  [程序?qū)崿F(xiàn)]
    建立名為My的對(duì)話(huà)框工程,添加一個(gè)Edit和一個(gè)Button控件.EditID=IDC_EDIT1,ButtonID=IDC_BUTTON1.建立和IDC_BUTTON1的響應(yīng)函數(shù):OnButton1()
    void CMyDlg::OnButton1()
    {
       CString pText="你好";
       CEdit *m_Edit=(CEdit *)GetDlgItem(IDC_EDIT1);
       int nLen=m_Edit->GetWindowTextLength();
       m_Edit->SetFocus();
       m_Edit->SetSel(nLen, nLen);
       m_Edit->ReplaceSel(pText);
    }
    Edit控件中輸入字符,想追加時(shí)按IDC_BUTTON1按鈕.看看效果.

 

4.怎樣實(shí)現(xiàn)3D效果?

在對(duì)話(huà)框中怎樣實(shí)現(xiàn)EditListboxes控件的3D效果?(環(huán)境95/NT VC5.0)

1). 使用帶WS_EX_CLIENTEDGE標(biāo)志的::CreateWindowEx來(lái)替換::CreateWindow 或者用CWnd::CreateEx替換CWnd::Create.
2).在建立控件之后,調(diào)用ModifyStyleEx(0, WS_EX_CLIENTEDGE).

 

5.RichEdit加入后,對(duì)話(huà)框打不開(kāi)

Dialog(FormView中打開(kāi))中加入CRichEdit控件后,這個(gè)dialog 為什么打不開(kāi)如何處理?
  [解決方法]
  在函數(shù):InitInstance的第一句加入AfxInitRichEdit();

 

6.Richedit設(shè)置背景圖片的辦法

1:繼承CRichEditCtrl::OnEraseBkgnd(CDC* pDC)消息事件中,給Richedit控件繪制上背景圖片:m_bmpBackground.DrawDIB(pDC, 0, 0, rc.Width(), rc.Height());當(dāng)然也可以通過(guò)subclass richedit window之后,在回調(diào)函數(shù)中處理WM_ERASEBKGND消息。

2:設(shè)置了Richedit控件的透明屬性;

3:依照kenwhale所說(shuō)的,HookGDI32.DLL中的ExtTextOut函數(shù),將RichEdittext-output options去除ETO_OPAQUE style

。綜上所述,即可實(shí)現(xiàn)RichEdit控件的背景圖片效果。

據(jù)此,我還實(shí)現(xiàn)了RichEdit控件背景繪制AVI動(dòng)畫(huà)效果。

 

7.改變編輯框的背景色(WM_CTLCOLOR消息)

首先要明白:WM_CTLCOLOR是一個(gè)由控制(Control)發(fā)送給它父窗口的通知消息(Notification message)

實(shí)現(xiàn)步驟:
生成一個(gè)標(biāo)準(zhǔn)的單文檔應(yīng)用程序框架,假設(shè)應(yīng)用程序的名稱(chēng)為Color。我將利用它的About對(duì)話(huà)框做示范。在About dialog中添加兩個(gè)Edit control,設(shè)定其IDIDC_EDIT1IDC_EDIT2。

第一種方法(對(duì)應(yīng)于IDC_EDIT1): 按照標(biāo)準(zhǔn)的Windows編程,由其父窗口的消息處理函數(shù)負(fù)責(zé)處理WM_CTLCOLOR消息。

1. CAboutDlg中添加一個(gè)數(shù)據(jù)成員:HBRUSH m_brMine;
2. 利用向?qū)в成?/span>AboutDlgWM_CTLCOLOR消息,產(chǎn)生函數(shù):HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
pDCAboutDlg的設(shè)備上下文,pWndAboutDlg中發(fā)送該消息的control指針,nCtlColorControl的類(lèi)型編碼。對(duì)其進(jìn)行如下修改:

HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  if ((pWnd->GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
  {
      COLORREF clr = RGB(255,0,0);
      pDC->SetTextColor(clr);   //設(shè)置紅色的文本
      clr = RGB(0,0,0);
      pDC->SetBkColor(clr);     //設(shè)置黑色的背景
      m_brMine = ::CreateSolidBrush(clr);
      return m_brMine;  //作為約定,返回背景色對(duì)應(yīng)的刷子句柄
  }
  else
  {
      HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
      return hbr;
  }
}

第二種方法(對(duì)應(yīng)于IDC_EDIT2):
利用MFC 4.0的新特性: Message reflection

1.利用向?qū)砑右粋€(gè)新的類(lèi):CColorEdit,基類(lèi)為CEdit;
2.CColorEdit中添加一個(gè)數(shù)據(jù)成員: HBRUSH m_bkBrush;
3.利用向?qū)в成?/span>CColorEdit"=WM_CTLCOLOR"消息,產(chǎn)生函數(shù):

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor);

對(duì)其進(jìn)行如下修改:

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
  COLORREF clr = RGB(0,0,0);
  pDC->SetTextColor(clr);   //設(shè)置黑色的文本
  clr = RGB(255,0,0);
  pDC->SetBkColor(clr);     //設(shè)置紅色的背景
  m_bkBrush = ::CreateSolidBrush(clr);
  return m_bkBrush;  //作為約定,返回背景色對(duì)應(yīng)的刷子句柄
}

4.利用向?qū)?/span>IDC_EDIT2生成一個(gè)數(shù)據(jù)成員CColorEdit m_coloredit;
5.在定義CAboutDlgcolor.cpp文件中加入:#include "coloredit.h"

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
[VC/MFC]Combo控件背景色更改(非自繪)
設(shè)置字體
VC MFC中修改STATIC的文本顏色
網(wǎng)上收集的關(guān)于static text文字修改顏色和字體的解決辦法
CStatic設(shè)置文字、字體、顏色和OnCtlColor的使用
VC?使用OnCtlColor函數(shù)來(lái)改變控件顏色(引用)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服