日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC2008中处理CStatic控件的单击STN_CLICKED消息

發布時間:2024/4/11 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC2008中处理CStatic控件的单击STN_CLICKED消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在MFC中,靜態文本CStatic控件主要是用來作為標簽,即作為注釋用的。一般情況下不做消息響應。但是有時特殊情況下會做一些消息響應,比如處理單擊事件STN_CLICKED等。

???? 在VC2008下使用MFC創建了一個基于對話框的應用程序。添加一個CStatic控件,修改其Caption屬性為:Number1:

???? 默認情況下MFC中所有新添加的靜態控件的ID是一樣的,都是IDC_STATIC,如果想要使用某個STATIC控件進行消息響應,則首先需要修改該控件ID,比如將其ID修改成IDC_NUMBER1。

??? 對于上述ID為IDC_NUMBER1的CStatic控件,在其屬性中添加了STN_CLICKED的消息響應函數,

自動生成一個消息映射如下:

[cpp]?view plaincopy
  • BEGIN_MESSAGE_MAP(CTestDlg,?CDialog)??
  • ?ON_STN_CLICKED(IDC_NUMBER1,?&CTestDlg::OnStnClickedNumber1)??
  • END_MESSAGE_MAP()??

  • 函數聲明為:

    [cpp]?view plaincopy
  • afx_msg?void?OnStnClickedNumber1();??

  • 實現體為:
    [cpp]?view plaincopy
  • void?CTestDlg::OnStnClickedNumber1()??
  • {??
  • ????//?TODO:?Add?your?control?notification?handler?code?here??
  • ????CString?strNum1;??
  • ????GetDlgItem(IDC_NUMBER1)->GetWindowText(strNum1);??
  • ????if?(strNum1?==?_T("Number1:"))??
  • ????{??
  • ????????GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("數值1:"));??
  • ????}??
  • ????else??
  • ????{??
  • ????????GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("Number1:"));??
  • ????}??
  • }??
  • 接著運行了程序,當單擊CStatic控件時,其值未發生變化,查閱了MSDN中關于Static Controls Messages 中的STN_CLICKED?消息,有如下描述:

    STN_CLICKED

    This message is sent when the user clicks a static control that has the SS_NOTIFY style.

    原來需要在VS2008中修改ID為IDC_NUMBER1的CStatic控件的Notify屬性(即SS_NOTIFY風格),將其改成TRUE就OK了,默認的屬性為FASLE,即靜態文本控件在默認情況下是不發送通告消息的。

    總結如下,為了使得一個靜態文本控件能夠響應鼠標單擊消息,那么需要進行兩個特殊的步驟:

    1、改變它的ID。(默認統一為IDC_STATIC)

    2、在屬性對話框中,將其notify屬性設置為true。

    總結

    以上是生活随笔為你收集整理的VC2008中处理CStatic控件的单击STN_CLICKED消息的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。