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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC中滚动条slider和编辑框edit的联动

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC中滚动条slider和编辑框edit的联动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想在MFC中實現滾動條slider和編輯框edit的聯動(改變滾動條,顯示數字在編輯框),同時想要添加兩個滾動條,分別控制亮度和對比度。參考了幾個博客在VS2017中跑不出來。自己寫了一個能運行的版本,供大家參考。這里沒有給出改變對比度和亮度的函數,只是實現實現滾動條slider和編輯框edit的聯動。
最終實現的效果

第一部分:滾動條和編輯框聯動部分。
第一步 ,在資源試圖界面找到Dialog,打開Dialog界面(這里用的是MFC基于對話框類型)

在工具箱中雙擊slider control,添加兩個。然后同樣的道理,添加兩個edit control。


添加完如下圖所示(前面我又自行添加了兩個Static Text靜態文本,修改成亮度和對比度,以此來標識,看起來更清晰)。


第二步,給滾動條(slider)添加兩個變量。
一個是控件類型,另一個是值類型。下面就以其中一個滾動條為例。該控件的ID名稱是IDC_SLIDER1,對應的是上圖中的亮度對應的滾動條的ID。
【1】右擊滾動條,選擇添加變量。如下圖,一般只需要修改三個地方。類別,名稱,訪問(一般是private),這里改成:類別:控件,訪問:private,名稱:m_slider.然后點擊完成,這樣就添加好了控件類型的變量。

【2】再來添加值類型的變量。同樣的,右擊同一個滾動條,選擇添加變量,此處修改類別:值,訪問:private,名稱改為m_int。點擊完成即可。

用同樣的手法給另外一個滾動條添加兩個變量。如下圖所示。
【1】控件類型變量。控件ID為:IDC_SLIDER2,名稱:m_slider2

【2】值類型變量。數值變量名稱為m_int2

再來看一下整個界面

第三步,滾動條初始化。
打開類試圖,找到下面


在初始化部分BOOL CMFCApplication1Dlg::OnInitDialog()底下,找到下面這個位置,在TODO后面添加如下代碼:

// TODO: 在此添加額外的初始化代碼//滾動條1//設置滾動條滾動范圍m_slider.SetRange(0, 100);//每十個單位畫一個刻度m_slider.SetTicFreq(10);//設置初始位置int Start=80;m_slider.SetPos(Start);//滾動條初始位置SetDlgItemInt(IDC_EDIT1, Start);//設置編輯框的初始值//滾動條2//設置滾動條滾動范圍m_slider2.SetRange(0, 300);//每十個單位畫一個刻度m_slider2.SetTicFreq(10);//設置初始位置int Start2 = 80;m_slider2.SetPos(Start2);SetDlgItemInt(IDC_EDIT2, Start2);//編輯框的初始值

第四步,給滾動條添加事件
右擊整個對話框(不是某一個控件),選擇類向導,選擇消息,找到WM_HSCROLL,雙擊,之后點擊確定。

然后彈出如下界面

這里就是實現滾動條和編輯框聯動的地方(改變滾動條,顯示相應的值)需要注意的是,滾動條和按鈕不一樣,按鈕可以添加很多的消息,而滾動條只有這么一個,因為它是在整個對話框頁面設置的。那該怎么區分不同的滾動條呢?
方法是通過pSlider->GetDlgCtrlID()來和滾動條的ID來比較,區分是對不同的滾動條進行操作。
代碼如下:

// TODO: 在此添加消息處理程序代碼和/或調用默認值 if (pScrollBar != NULL) {// 強制轉換成CSliderCtrlCSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;// 根據CSlider控件的ID 來判斷是哪一個滾動條if (pSlider->GetDlgCtrlID() == IDC_SLIDER1)//對第一個滾動條進行操作{//獲取當前位置值,放在變量m_int中m_int = m_slider.GetPos();//內容設置到編輯框中,編輯框的ID是IDC_EDIT1SetDlgItemInt(IDC_EDIT1, m_int);//On_ContrastAndBright(m_int, m_int2);//用來調整圖片亮度和對比度的函數//imshow("src1", g_dstImage);// opencv用來顯示圖片}if (pSlider->GetDlgCtrlID() == IDC_SLIDER2)//對第二個滾動條操作{//獲取當前位置值,放在變量m_int2中m_int2 = m_slider2.GetPos();//內容設置到編輯框中,編輯框的ID是IDC_EDIT2SetDlgItemInt(IDC_EDIT2, m_int2);//On_ContrastAndBright(m_int, m_int2);//用來調整圖片亮度和對比度的函數//imshow("src1", g_dstImage);// opencv用來顯示圖片} }

最終的運行結果


總結:
1.安放控件
2.添加變量:控件類型和值類型。
3.初始化
4.添加事件。注意滾動條消息是對于整個頁面的,對不同的滾動條的處理事件都寫在這底下,區分的依據是對ID進行識別。

總結

以上是生活随笔為你收集整理的MFC中滚动条slider和编辑框edit的联动的全部內容,希望文章能夠幫你解決所遇到的問題。

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