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

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
vc技巧????-轉(zhuǎn)載
在這里開始書寫日記、心

1、登陸菜單============================================================
   m_hMenu ::LoadMenu(hInstResource, MAKEINTRESOURCE(nMenu));//得到HMENU
   CMenu mnu;    mnu.Attach( m_hMenu );
   CMenu mnu;    mnu.LoadMenu(nMenu);
   CMenu* pMenu CMenu::FromHandle(m_hMenu );

   CMenu *menu,*popup;
   menu=new CMenu();
   menu->LoadMenu(IDR_MENU1);
   popup=menu->GetSubMenu(0);
   ===========================================================================
 得到應(yīng)用程序路徑
  CString   m_strPath;   
  GetModuleFileName(NULL,m_strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);   
  m_strPath.ReleaseBuffer();

2、響應(yīng)鍵盤鼠標(biāo)輸入等==================================================
void CYourDlg::PreTranslateMessage(MSG* pMsg) 
{
    if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) 
    {
        if(pMsg->message==WM_KEYDOWN)
        {
            int iID ::GetDlgCtrlID(hWnd);
            if(iID == IDC_EDIT_INPUT)
            {
                if(pMsg->wParam==13)//回車
                {
                 
            }
        }
    }
}

3、編輯框拉到最下面===================================================
CEdit *pEdit (CEdit *)GetDlgItem(IDC_EDIT_SEND);
pEdit->SendMessage(WM_VSCROLL, SB_BOTTOM);

PostMessage(WM_VSCROLL, SB_BOTTOM); 

==========================================================================================
4、我要實現(xiàn)OnButton()用記事本打開文本文件,該用什么類函數(shù).如何實現(xiàn)============================
ShellExecute(this->m_hWnd,"open","notepad.exe","c:\\MyLog.txt","",SW_SHOW );

==========================================================================================
5、應(yīng)用程序退出函數(shù)
PostQuitMessage(0);

==========================================================================================
6、設(shè)置當(dāng)前窗口函數(shù)(主窗口函數(shù)里面)
SetForegroundWindow();

===========================================================================================
7、得到活動視圖
CMainFrame *pMainFrame (CMainFrame *)AfxGetMainWnd();
CMy7View* pView=(CMy7View*)pMainFrame->GetActiveView();

===========================================================================================
8、得到應(yīng)用程序指針和打開文件
CLinkmestApp* pApp=(CLinkmestApp*) AfxGetApp();    
pApp->OpenDocumentFile(infilename);
===========================================================================================
9、靜態(tài)成員函數(shù)沒有this,也就沒有m_hWnd,因此出錯。
使用AfxMessageBox

===========================================================================================
10、在DLL模塊中調(diào)用GetModuleHandle(NULL)返回哪個模塊的句柄,exe還是dll?
exe!If this parameter is NULL, GetModuleHandle returns handle to the file used to create the calling process.

===========================================================================================
11、如何將CString類型轉(zhuǎn)化為float類型啊,急死了,幫忙啊. 
CString a="32.2";
float atof(a);

===========================================================================================
12、窗口句柄
HWND FindWindow(
  LPCTSTR lpClassName,  // pointer to class name
  LPCTSTR lpWindowName  // pointer to window name
);
===========================================================================================
13、模式和無模式對話的中止是不一樣的:
模式對話通過調(diào)用CDialog EndDialog 來中止,無模式對話則是調(diào)用
CWnd: DestroyWindow來中止的,

===========================================================================================
14、動態(tài)創(chuàng)建的edit沒有邊框的問題
 m_edit.Create(....);
 m_edit.ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_DRAWFRAME);

===========================================================================================
15、改變richedit指定區(qū)域的顏色及字體

        CHARFORMAT cf;
        ZeroMemory(&cf, sizeof(CHARFORMAT));
        cf.cbSize sizeof(CHARFORMAT);
        cf.dwMask CFM_BOLD CFM_COLOR CFM_FACE |
                            CFM_ITALIC CFM_SIZE CFM_UNDERLINE;
        cf.dwEffects 0;
        cf.yHeight 12*12;//文字高度
        cf.crTextColor RGB(200, 100, 255); //文字顏色
        strcpy(cf.szFaceName ,_T("隸書"));//設(shè)置字體
     
        m_richedit1.SetSel(1, 5); //設(shè)置處理區(qū)域
        m_richedit1.SetSelectionCharFormat(cf);

===========================================================================================
16、隨輸入自動滾動到最后一行(richedit同樣適用)

    方法一:(摘自msdn)
        // The pointer to my edit.
        extern CEdit* pmyEdit;
        int nFirstVisible pmyEdit->GetFirstVisibleLine();

        // Scroll the edit control so that the first visible line
        // is the first line of text.
        if (nFirstVisible 0)
        {
            pmyEdit->LineScroll(-nFirstVisible, 0);
        }
    方法二:
        m_richedit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
===========================================================================================
17、在edit最后添加字符串

        CString str;
        m_edit1.SetSel(-1, -1);   //在指定位置nLength處追加 m_edit.SetSel(nLength, nLength);

        m_edit1.ReplaceSel(str);
===========================================================================================
18、判斷edit中光標(biāo)狀態(tài)并得到選中內(nèi)容(richedit同樣適用)

        int nStart, nEnd;
        CString strTemp;

        m_edit1.GetSel(nStart, nEnd);
        if(nStart == nEnd)
        {
            strTemp.Format(_T("光標(biāo)在%d"), nStart);
            AfxMessageBox(strTemp);
        }
        else
        {
            //得到edit選中的內(nèi)容     
            m_edit1.GetWindowText(strTemp);
            strTemp strTemp.Mid(nStart) strTemp.Mid(nEnd);
            AfxMessageBox(strTemp); 
        }
    注:GetSel后,如果nStart和nEnd,表明光標(biāo)處于某個位置(直觀來看就是光標(biāo)在閃動);
             如果nStart和nEnd不相等,表明用戶在edit中選中了一段內(nèi)容。
===========================================================================================
19、設(shè)置edit只讀屬性

    方法一:
                m_edit1.SetReadOnly(TRUE);
    方法二:
                ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);
    方法三:    在屬性中直接選中!
===========================================================================================
20、如何限制edit輸入指定字符

   可以從CEdit派生一個類,添加WM_CHAR消息映射。下面一個例子實現(xiàn)了限定輸入16進制字符的功能。

   void CMyHexEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)  
   
        if (nChar >= '0' && nChar <= '9') || 
             (nChar >= 'a' && nChar <= 'f') || 
             (nChar >= 'A' && nChar <= 'F') || 
              nChar == VK_BACK ||  
              nChar == VK_DELETE)    //msdn的virtual key
       
            CEdit::OnChar(nChar, nRepCnt, nFlags); 
            
   }
==========================================================================================
21、對話框的背景貼上一張圖
1.在對話框頭文件件定義CBrush m_brBk;
2.HBRUSH CxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (pWnd == this)
{
return m_brBk;
}
}
3.BOOL CxxDlg::OnInitDialog()
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
}
=========================================================================================
22、在TreeList中使用Edit功能 
首先TreeList應(yīng)該使用TVS_EDITLABELS風(fēng)格,可以在創(chuàng)建資源時指定,或者在使用Create時指定,或者在PreCreateWindos()中改變。 

接下來需要處理TVN_BEGINLABELEDIT和TVN_ENDLABELEDIT消息。  

void CXXXX::OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) 
{

        TV_DISPINFO* pTVDispInfo (TV_DISPINFO*)pNMHDR;

        // Limit text length

        GetEditControl()->LimitText(127);

        *pResult 0;
}
如果不處理 TVN_ENDLABELEDIT 消息,則文本的更改不會生效。
 void COutline::OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) 
{
        GetEditControl()->GetWindowText(s);
        // Set result to TRUE to accept the changes
        *pResult TRUE;
}
=========================================================================================
23、如何動態(tài)改變Picture控件里的圖片
   HBITMAP hBitmap (HBITMAP)::LoadImage(NULL, "這里是你的*.bmp圖片位置(如:             D:\\VC\\1.bmp)", IMAGE_BITMAP, 0,0,LR_LOADFROMFILE LR_CREATEDIBSECTION                    LR_DEFAULTSIZE);((CStatic *)GetDlgItem(Picture控件ID))->SetBitmap(hBitmap);
=========================================================================================
24、關(guān)于在CButton上貼位圖的問題 
方法一:
首先,你得選中按鈕的owner Draw屬性,在資源中加載兩副*.bmp格式的位圖,然后在你的對話框類中加入:
CBitmapButton m_btnX1;//必須放在函數(shù)外面才能正常實現(xiàn)

BOOL CXXXXXXX::OnInitDialog()
{
CDialog::OnInitDialog();

m_btnX1.LoadBitmaps(IDB_XXXX_UP,IDB_XXXX_DOWN);//這里是兩副位圖,鼠標(biāo)按下和彈起,
                                               //  也可以只加一個ID資源;
m_btnX1.SubclassDlgItem(IDC_DASEN_X1,this);
m_btnX1.SizeToContent();
}

方法二:

首先要在資源編輯器的按鈕屬性對話框中設(shè)置按鈕的bitmap屬性為TRUE
CBitmap Bitmap;
Bitmap.LoadBitmap(IDB_BITMAP1);
HBITMAP hBitmap (HBITMAP)Bitmap.Detach();
CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON2);
pButton->SetBitmap(hBitmap);

關(guān)于在CButton上貼icon圖標(biāo)的問題 

首先要在資源編輯器的按鈕屬性對話框中設(shè)置按鈕的Icon屬性為TRUE
HICON hIcon AfxGetApp()->LoadIcon(IDI_ICON1);
CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON1);
pButton->SetIcon(hIcon);

=========================================================================================
25、如何動態(tài)獲取工具條指針并給工具條加標(biāo)題?

  [問題提出]
  工具條也是窗口,是窗口就有標(biāo)題,如何給工具條加標(biāo)題?
  [程序?qū)崿F(xiàn)]
  不想動態(tài)改變工具條的標(biāo)題就在CMainFrame::OnCreate()中:
  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  {
   ......
   m_wndToolBar.SetWindowText(_T("Standdard")); 

   return 0;
  }
  若想動態(tài)改變工具條的標(biāo)題,如下:
  聲明一個菜單,并響應(yīng)事件,如響應(yīng):OnMyToolBar()函數(shù)
  void CMainFrame::OnMyToolBar() 
  {
   // TODO: Add your command handler code here
   CToolBar pToolBar =(CToolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR); 
   pToolBar->SetWindowText (_T("Standdard"));
  }
  不要在TooBar懸浮時做OnMyToolBar()會出錯的. 
  順便提一下如何獲得狀態(tài)條的指針:
  CStatusBar pStatusBar =(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow   (AFX_IDW_STATUS_BAR); 
========================================================================================
26、為什么即使調(diào)用EnableMenuItem菜單項后,菜單項還處于禁止?fàn)顟B(tài)?

  [問題提出]
    在單文檔工程中,編輯->撤銷菜單選項是灰色不可用狀態(tài),如何使他不灰化?使用EnableMenuItem   (ID_EDIT_UNDO,MF_BYCOMMAND MF_ENABLED);不好使.

  [解決方法]
    在MainFrame中有個m_bAutoMenuEnable成員變量,默認(rèn)是TRUE,要把它FALSE了,就好使了.

  [程序?qū)崿F(xiàn)]
    在你的工程建立一個菜單,建立響應(yīng)的函數(shù)如:OnYourOperate().
    void CMainFrame::OnYourOperate() 
    {
       // TODO: Add your command handler code here
       CMenu* pMenu=GetMenu (); 
       m_bAutoMenuEnable=FALSE;
       ASSERT_VALID (pMenu); 
       pMenu->EnableMenuItem (ID_EDIT_UNDO,MF_BYCOMMAND MF_ENABLED); 

    }
    編譯運行,不要做其他操作,先試試點你的菜單后編輯->撤銷是否不灰化了.
    試試去掉m_bAutoMenuEnable=FALSE;操作一下. 
========================================================================================
27、如何在編輯控件中以追加的方式添入字符?

  [問題提出]
    SetDlgItemText可以向Edit控件中輸入字符,發(fā)送更新的消息也可是Edit控件顯示與其關(guān)聯(lián)的變量的值,   但若是向已有的Edit字符后追加字符,該如何做?
  [程序?qū)崿F(xiàn)]
    建立名為My的對話框工程,添加一個Edit和一個Button控件.Edit的ID=IDC_EDIT1,Button的        ID=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控件中輸入字符,想追加時按IDC_BUTTON1按鈕.
========================================================================================
28、為基于MFC的對話框添加ToolTip的簡單方法

  此方法適用于MFC派生類,在基于對話框的類中測試通過。具體步驟如下:

  1、選擇“Project”菜單,然后“Set Active Project” 。
  2、選擇“Project”菜單 -->“Add to Project” -->“Components and Controls” -->“VC++      Components” --> “ToolTip Support” 
  3、選擇“Insert” 
  4、在對話框資源中加入一個按鈕,ID為IDC_ToolTip
  5、在 CDialog::OnInitDialog() 中找到下面的注釋行:

     // TODO: Use one of the following forms to add controls:
     // m_tooltip.AddTool(GetDlgItem(IDC_), );
     // m_tooltip.AddTool(GetDlgItem(IDC_), "");
     然后在注釋行后加入一行代碼:
     m_tooltip.AddTool(GetDlgItem(IDC_ToolTip), "顯示 ToolTip");
     經(jīng)過上面的步驟之后:
     頭文件(*.h)中會自動加入下面的代碼:
        public:
        virtual BOOL PreTranslateMessage(MSG* pMsg);
     實現(xiàn)文件(*.cpp)會加入方法實現(xiàn):
        PreTranslateMessage(MSG* pMsg);
     編譯程序執(zhí)行吧,將鼠標(biāo)指針移到ToolTip按鈕上就會顯示出一個ToolTip信息。
========================================================================================
29、在程序進行中不響應(yīng)ESC,Enter鍵應(yīng)該怎么做?

  [問題提出]
    對話框程序ESC和ENTER健會導(dǎo)致程序退出,在程序進行中不響應(yīng)ESC,Enter鍵應(yīng)該怎么做?

  [問題解答]

  方法1:重載CDialog::OnOK();
  方法2:
    BOOL CCXXX::PreTranslateMessage(MSG* pMsg) 
    {
        if(pMsg->message == WM_KEYDOWN)
        {
            switch(pMsg->wParam)
            {
                case VK_RETURN://屏蔽回車
                return TRUE;
                case VK_ESCAPE://屏蔽Esc
                return TRUE;
            }
        
        return CDialog::PreTranslateMessage(pMsg);
     
========================================================================================
30、讓應(yīng)用程序有啟動畫面
   在應(yīng)用程序中,從Project 菜單中選擇AddToProject,并單擊位于次級菜單上的Components    andControls...,選擇Splashscreen組件,如圖1所示,單擊Insert。 接受所有的默認(rèn)設(shè)置。
========================================================================================
31、如何處理自定義消息

    ClassWizard不允許增加用戶自定義消息,所以你必須手工輸入。輸入后,ClassWizard就可以象處理其 它消息一樣處理你自定義的消息了。

    下面是增加自定義消息的步驟:

    第一步:定義消息。開發(fā)Windows應(yīng)用程序時,Microsoft推薦用戶自定義消息至少是WM_USER+100,因  為很多新控件也要使用WM_USER消息。#define  MYWM_MESSAGE  WM_USER+100  #define WM_MY_MESSAGE (WM_USER+100),

    第二步:實現(xiàn)消息處理函數(shù)。該函數(shù)使用WPRAM和LPARAM參數(shù)并返回LPESULT。 

 LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
 {
           // TODO: 處理用戶自定義消息
          ...
            return 0;
 }
    第三步:在類頭文件的AFX_MSG塊中說明消息處理函數(shù):

 class CMainFrame:public CMDIFrameWnd
 {
    ...
    // 一般消息映射函數(shù)
    protected:
        // {{AFX_MSG(CMainFrame)
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        afx_msg void OnTimer(UINT nIDEvent);
        afx_msg LRESULT OnMyMessage(WPARAM wParam,  LPARAM lParam);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 }
    第四步:在用戶類的消息塊中,使用ON_MESSAGE宏指令將消息映射到消息處理函數(shù)中。

 BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ON_WM_CREATE()
    ON_WM_TIMER()
    ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
    //}}AFX_MSG_MAP
 END_MESSAGE_MAP()
    如果用戶需要一個整個系統(tǒng)唯一的消息,可以調(diào)用SDK函數(shù)RegisterWindowMessage并使用 ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步驟同上。
========================================================================================
32、在對話框中的控件中顯示自的光標(biāo)定義
BOOL CButtonDlg::PreTranslateMessage(MSG* pMsg) 
{
 // TODO: Add your specialized code here and/or call the base class
         HWND hWnd ::GetFocus();
 int iID ::GetDlgCtrlID(hWnd);
         (GetDlgItem(IDC_EDIT1))->m_hWnd;
 if(iID == IDC_EDIT1)
 {
                  ::HideCaret(hWnd);
          ::SetCursor(::LoadCursor(NULL,IDC_HELP));  
 
 }
 return CDialog::PreTranslateMessage(pMsg);
}情

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
形形色色的自定義消息(下)
使用MFC自定義消息
VC自定義消息 傳參字符串
上位機開發(fā)-[轉(zhuǎn)]vc自定義消息的發(fā)送與接收的方法實現(xiàn) - 單片機學(xué)習(xí)網(wǎng)
vc實現(xiàn)系統(tǒng)托盤圖標(biāo)
VC++消息映射的思考【轉(zhuǎn)】
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服