久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(zhàn)洞察。

MFC中Spin控件與Edit控件的手動綁定實戰(zhàn)指南

MFC中Spin控件與Edit控件的手動綁定實戰(zhàn)指南 1. 項目概述為什么Spin控件和Edit Control的綁定不是“連上線”那么簡單在MFC開發(fā)中看到“Spin控件綁定Edit Control”這個標題很多剛從C#或Qt轉過來的開發(fā)者第一反應是“不就是拖兩個控件、勾個屬性、設個范圍5分鐘搞定?!蔽耶斈暌彩沁@么想的——直到在某工業(yè)數(shù)據(jù)采集界面里用戶連續(xù)快速點擊上/下按鈕導致編輯框數(shù)值跳變失序、輸入焦點異常丟失、甚至觸發(fā)了未定義行為的斷言彈窗。那一刻我才意識到MFC里的“綁定”從來不是UI設計器里打個勾就完事的自動化魔法而是一場需要親手調度消息流、精確控制數(shù)據(jù)流向、主動干預Windows底層消息循環(huán)的精細操作。Spin控件即CSpinButtonCtrl本身不存儲數(shù)值它只是一個“方向控制器”Edit ControlCEdit才是真正的“數(shù)值容器”。二者之間沒有內置的數(shù)據(jù)同步機制所謂“綁定”本質是開發(fā)者在WM_VSCROLL對Spin和EN_CHANGE/EN_KILLFOCUS對Edit等消息之間架設一座可控的橋梁。這個過程涉及三個關鍵矛盾消息時序沖突Spin滾動時Edit是否應立即更新、數(shù)據(jù)類型鴻溝Spin只處理整數(shù)Edit默認是字符串浮點支持需手動介入、用戶交互主權爭奪當用戶直接在Edit里輸入時Spin的上下限是否應動態(tài)重置。這些細節(jié)恰恰是MFC老項目維護中最常被忽略、卻最易引發(fā)線上故障的“靜默雷區(qū)”。這篇文章面向兩類人一類是正在啃《深入淺出MFC》的初學者需要避開教科書里沒寫的實操陷阱另一類是接手遺留系統(tǒng)的中級開發(fā)者面對滿屏DDX_Text和ON_NOTIFY卻理不清邏輯斷點。我會完全拋開“理論正確”的空泛講解直接還原一個真實工業(yè)場景下的完整實現(xiàn)——從資源視圖拖控件開始到處理小數(shù)精度、防止非法輸入、響應鍵盤方向鍵、甚至讓Spin在Edit獲得焦點時自動激活——所有代碼都經過VS2019 Windows 10/11雙環(huán)境實測參數(shù)值全部標注物理意義比如“步進值0.1對應傳感器0.1℃分辨率”不寫一句“讀者可自行擴展”。你復制粘貼就能跑但更重要的是你知道每一行為什么必須這么寫。2. 核心設計思路與方案選型為什么不用DDX/DDV而堅持手動消息映射2.1 DDX/DDV綁定的三大硬傷教科書不會告訴你的失效場景MFC向導生成的對話框類默認提供DDX_Text宏來關聯(lián)控件ID和成員變量看似省事。但在SpinEdit組合中這恰恰是問題的起點。我用一個真實案例說明某溫控系統(tǒng)要求設置目標溫度-50.0℃ ~ 200.0℃精度0.1℃。設計師拖入IDC_EDIT_TEMP和IDC_SPIN_TEMP在類向導中為Edit添加double m_dTargetTemp并勾選“Value”類型。生成的DoDataExchange里出現(xiàn)DDX_Text(pDX, IDC_EDIT_TEMP, m_dTargetTemp); DDV_MinMaxDouble(pDX, m_dTargetTemp, -50.0, 200.0);表面看完美Edit顯示數(shù)值Spin控制增減范圍校驗也有了。但實際運行時用戶輸入“123.456”后回車Edit顯示變成“123.46”四舍五入而Spin的當前值卻仍是舊值更糟的是若用戶快速連點Spin上鍵5次Edit數(shù)值可能跳過中間值直接從25.0→25.5→26.0丟失25.1~25.4的過渡態(tài)——因為DDX_Text只在對話框UpdateData(FALSE)時單向刷新而Spin的滾動消息根本沒觸發(fā)該函數(shù)。問題根源在于DDX/DDV是數(shù)據(jù)交換機制不是實時綁定機制。它只在UpdateData()被顯式調用時才同步而Spin的UDN_DELTAPOS通知是異步發(fā)送的二者時間軸完全錯位。這導致三個無法繞過的缺陷響應延遲Spin操作后Edit內容不會立即更新需額外調用UpdateData(FALSE)但頻繁調用會阻塞UI線程精度丟失DDX_Text對double類型的轉換使用_ttof()默認截斷小數(shù)位無法控制保留位數(shù)校驗失效DDV_MinMaxDouble只在校驗階段UpdateData(TRUE)檢查用戶在Edit中輸入“abc”時Edit控件本身已顯示亂碼但變量m_dTargetTemp仍保持舊值程序邏輯已處于不可知狀態(tài)。提示這不是Bug而是MFC設計哲學的必然結果——它把“數(shù)據(jù)一致性”責任完全交給開發(fā)者而非框架自動維護。2.2 手動消息映射方案用Windows原生消息構建確定性管道我們放棄DDX/DDV改用純消息驅動方案核心邏輯鏈為Spin滾動 →UDN_DELTAPOS消息 → 計算新值 → 格式化字符串 →SetWindowText()更新Edit → Edit內容變更 →EN_CHANGE消息 → 解析字符串 → 校驗范圍 → 更新Spin位置這個環(huán)路的關鍵在于主動控制消息觸發(fā)時機和順序。具體選型依據(jù)如下Spin消息選擇UDN_DELTAPOS而非WM_VSCROLLWM_VSCROLL是底層滾動消息包含SB_LINEUP/SB_LINEDOWN等通用碼但Spin控件會將其轉換為UDN_DELTAPOS通知通過NM_UPDOWN結構體其中iPos字段直接給出目標位置iDelta給出步進量。實測發(fā)現(xiàn)UDN_DELTAPOS比WM_VSCROLL更穩(wěn)定——尤其在高DPI縮放或遠程桌面環(huán)境下WM_VSCROLL常因鼠標采樣抖動誤觸發(fā)多次而UDN_DELTAPOS由Spin內部狀態(tài)機嚴格控制iDelta值恒為±1除非自定義SetBuddy()后修改。Edit消息選擇EN_CHANGE而非EN_KILLFOCUSEN_KILLFOCUS只在Edit失去焦點時觸發(fā)但用戶可能輸入一半就去點其他按鈕此時非法輸入如“12.”未被校驗EN_CHANGE則每次字符增刪都觸發(fā)可實時攔截。代價是性能——需加防抖debounce否則快速輸入“123.45”會觸發(fā)5次解析。我的方案是在OnEnChange()中啟動一個100ms定時器僅當輸入停止100ms后才執(zhí)行解析既保證實時性又避免過度計算。數(shù)據(jù)類型統(tǒng)一為double但全程以字符串為中介Spin的SetRange32()只接受int但我們將邏輯范圍-50.0~200.0映射到Spin的整數(shù)范圍-500~2000步進值設為1再通過SetPos()/GetPos()操作。Edit中始終顯示格式化后的字符串如123.4解析時用_tcstod()并捕獲errnoERANGE杜絕atof()的靜默失敗。這套方案的確定性體現(xiàn)在每一步操作都有明確的消息來源、可預測的執(zhí)行順序、可驗證的狀態(tài)輸出。它不依賴MFC的“魔法”而是把Windows API的確定性發(fā)揮到極致。3. 實操細節(jié)與關鍵環(huán)節(jié)實現(xiàn)從資源創(chuàng)建到防抖解析的完整鏈條3.1 資源視圖配置兩個控件的物理布局與屬性設置在Visual Studio資源視圖中按以下步驟創(chuàng)建控件以VS2019為例其他版本路徑類似添加Edit Control工具箱拖拽Edit Control到對話框ID設為IDC_EDIT_TEMP右鍵屬性窗口將Style中的Number復選框取消勾選這是關鍵勾選后Edit會自動過濾非數(shù)字字符但會禁用小數(shù)點和負號且無法響應EN_CHANGERead-only保持FalseMultiline設為FalsePassword設為FalseWant return設為False避免回車觸發(fā)默認按鈕。添加Spin Button拖拽Spin Button控件ID設為IDC_SPIN_TEMP屬性中Auto buddy設為True此選項會讓Spin自動綁定相鄰的Edit控件但僅限于位置相鄰且ID連續(xù)我們不依賴它僅作為視覺提示Set buddy integer設為False禁用Spin自動轉換Edit內容為整數(shù)否則會覆蓋我們的double邏輯Alignment設為Right使其緊貼Edit右側。布局微調將Spin控件拖至Edit控件右側二者右邊界對齊調整Edit寬度確保能完整顯示最大值如“200.0”共5字符按默認字體需約80像素重要在資源編輯器中確保Spin控件的Z-order層疊順序高于Edit控件右鍵Spin →Bring to Front否則Spin的滾動箭頭可能被Edit遮擋。注意Auto buddy設為True后Spin會在PreSubclassWindow()中嘗試查找ID為IDC_EDIT_TEMP-1的控件作為伙伴。若Edit ID為IDC_EDIT_TEMPSpin ID必須為IDC_EDIT_TEMP1才能自動匹配。但我們采用手動綁定ID可自由命名無需遵循此規(guī)則。3.2 類向導注冊為兩個控件添加消息處理函數(shù)右鍵對話框類如CTempDlg→Properties→ 切換到Messages標簽頁按順序添加為Spin控件注冊UDN_DELTAPOS在IDC_SPIN_TEMP行找到UDN_DELTAPOS下拉選擇Add OnDeltaposSpinTempVS自動生成afx_msg void OnDeltaposSpinTemp(NMHDR *pNMHDR, LRESULT *pResult);此函數(shù)將在Spin被點擊時調用pNMHDR指向NMUPDOWN結構體。為Edit控件注冊EN_CHANGE在IDC_EDIT_TEMP行找到EN_CHANGE下拉選擇Add OnEnChangeEditTemp生成afx_msg void OnEnChangeEditTemp();此函數(shù)在Edit內容變化時觸發(fā)。額外添加EN_KILLFOCUS用于最終校驗可選但推薦同樣在IDC_EDIT_TEMP行添加EN_KILLFOCUS→OnKillfocusEditTemp用于Edit失焦時強制校驗并修正非法值。此時類向導會自動在.h文件中聲明函數(shù)在.cpp文件中生成空函數(shù)體。接下來我們填充核心邏輯。3.3 Spin滾動處理OnDeltaposSpinTemp的完整實現(xiàn)與精度控制void CTempDlg::OnDeltaposSpinTemp(NMHDR *pNMHDR, LRESULT *pResult) { LPNMUPDOWN pNMUpDown reinterpret_castLPNMUPDOWN(pNMHDR); // 1. 獲取當前Edit中的數(shù)值字符串→double CString strCurrent; GetDlgItemText(IDC_EDIT_TEMP, strCurrent); double dCurrent _tcstod(strCurrent, nullptr); if (errno ERANGE) { // 解析失敗重置為默認值 dCurrent 25.0; // 默認室溫 SetDlgItemText(IDC_EDIT_TEMP, _T(25.0)); } // 2. 定義邏輯參數(shù)物理意義明確 const double MIN_TEMP -50.0; // 最低溫度℃ const double MAX_TEMP 200.0; // 最高溫度℃ const double STEP 0.1; // 步進值℃對應傳感器分辨率 // 3. 計算新值dCurrent pNMUpDown-iDelta * STEP double dNew dCurrent pNMUpDown-iDelta * STEP; // 4. 范圍校驗與截斷非簡單clamp需考慮浮點精度 if (dNew MIN_TEMP) { dNew MIN_TEMP; } else if (dNew MAX_TEMP) { dNew MAX_TEMP; } // 5. 格式化輸出保留1位小數(shù)但避免浮點誤差如25.0顯示為25 CString strNew; strNew.Format(_T(%.1f), dNew); // 修復若結果為整數(shù)如25.0顯示為25更符合習慣 if (strNew.Right(2) _T(.0)) { strNew strNew.Left(strNew.GetLength() - 2); } // 6. 更新Edit控件 SetDlgItemText(IDC_EDIT_TEMP, strNew); // 7. 同步更新Spin位置使箭頭狀態(tài)與數(shù)值一致 // 將double映射到Spin的int范圍-50.0→-500, 200.0→2000 int nSpinPos static_castint(round(dNew * 10.0)); // *10因STEP0.1 CSpinButtonCtrl* pSpin static_castCSpinButtonCtrl*(GetDlgItem(IDC_SPIN_TEMP)); pSpin-SetPos(nSpinPos); *pResult 0; }關鍵細節(jié)解析第1步的_tcstod安全解析_tcstod是Unicode安全的字符串轉double函數(shù)返回轉換后的值并通過errno報告錯誤。ERANGE表示超出double范圍如輸入1e309此時我們重置為默認值并刷新Edit避免后續(xù)計算崩潰。第4步的范圍校驗邏輯使用if-else if而非min(max())因為浮點比較存在精度問題。例如dNew MAX_TEMP 1e-15時max(dNew, MAX_TEMP)可能因精度丟失仍返回dNew而顯式判斷可確保嚴格截斷。第5步的格式化技巧%.1f保證小數(shù)位數(shù)但25.0顯示為25.0不夠美觀。我們用Right(2) .0檢測并截去.0使顯示更符合工程習慣如HMI界面中25℃比25.0℃更常用。第7步的Spin位置同步SetPos()的參數(shù)是int因此需將double乘以10因步進0.1后四舍五入。round()比static_castint()更安全避免負數(shù)截斷錯誤如-25.7轉int得-25但round(-25.7)得-26。3.4 Edit內容變更處理OnEnChangeEditTemp的防抖解析與實時校驗// 在類頭文件(.h)中添加私有成員 private: UINT_PTR m_uTimerID; // 定時器ID CString m_strLastValid; // 上次合法值用于恢復 void CTempDlg::OnEnChangeEditTemp() { // 1. 獲取當前輸入內容 CString strInput; GetDlgItemText(IDC_EDIT_TEMP, strInput); // 2. 簡單合法性預檢快速過濾明顯非法字符 // 允許數(shù)字、小數(shù)點、負號、空字符串 bool bValid true; for (int i 0; i strInput.GetLength(); i) { TCHAR c strInput[i]; if (!(_istdigit(c) || c _T(.) || c _T(-) || c _T( ))) { bValid false; break; } } if (!bValid) { // 輸入非法字符閃爍提示可選 FlashWindow(TRUE); return; } // 3. 啟動防抖定時器若已存在則先銷毀 if (m_uTimerID ! 0) { KillTimer(m_uTimerID); } m_uTimerID SetTimer(1, 100, nullptr); // 100ms后觸發(fā) } // 在類向導中為WM_TIMER添加消息處理 afx_msg void OnTimer(UINT_PTR nIDEvent); void CTempDlg::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent 1 m_uTimerID ! 0) { KillTimer(m_uTimerID); m_uTimerID 0; // 4. 執(zhí)行深度解析與校驗 CString strInput; GetDlgItemText(IDC_EDIT_TEMP, strInput); // 去除首尾空格 strInput.Trim(); if (strInput.IsEmpty()) { // 空輸入設為默認值 SetDlgItemText(IDC_EDIT_TEMP, _T(25)); UpdateSpinPosition(25.0); return; } // 字符串轉double TCHAR* pEnd; double dInput _tcstod(strInput, pEnd); // 檢查是否全部字符都被解析pEnd應指向字符串末尾 if (*pEnd ! _T(\0)) { // 存在未解析字符如12.3abc AfxMessageBox(_T(輸入格式錯誤請輸入有效數(shù)字), MB_ICONEXCLAMATION); SetDlgItemText(IDC_EDIT_TEMP, m_strLastValid); return; } // 檢查范圍 const double MIN_TEMP -50.0; const double MAX_TEMP 200.0; if (dInput MIN_TEMP || dInput MAX_TEMP) { CString strMsg; strMsg.Format(_T(溫度范圍應在%.1f~%.1f℃之間), MIN_TEMP, MAX_TEMP); AfxMessageBox(strMsg, MB_ICONEXCLAMATION); SetDlgItemText(IDC_EDIT_TEMP, m_strLastValid); return; } // 5. 格式化并更新 CString strFormatted; strFormatted.Format(_T(%.1f), dInput); if (strFormatted.Right(2) _T(.0)) { strFormatted strFormatted.Left(strFormatted.GetLength() - 2); } SetDlgItemText(IDC_EDIT_TEMP, strFormatted); m_strLastValid strFormatted; // 更新最后合法值 // 6. 同步Spin位置 UpdateSpinPosition(dInput); } } // 輔助函數(shù)同步Spin位置 void CTempDlg::UpdateSpinPosition(double dValue) { int nPos static_castint(round(dValue * 10.0)); CSpinButtonCtrl* pSpin static_castCSpinButtonCtrl*(GetDlgItem(IDC_SPIN_TEMP)); pSpin-SetPos(nPos); }防抖機制詳解定時器策略SetTimer(1, 100, nullptr)創(chuàng)建一個ID為1、間隔100ms的定時器。每次OnEnChange觸發(fā)時先KillTimer再SetTimer確保無論用戶輸入多快如“123.456”只有最后一次輸入停止100ms后才執(zhí)行解析。實測100ms是平衡體驗與性能的最佳值——短于80ms用戶感覺不到延遲長于150ms會感知卡頓。雙重校驗先用_tcstod解析再檢查pEnd是否指向字符串末尾。這能捕獲12.3abc這類部分合法輸入而_tcstod會靜默返回12.3。pEnd檢查是C標準庫提供的可靠手段比正則表達式高效得多。錯誤恢復機制m_strLastValid成員變量存儲上次成功解析的值。當輸入非法時直接恢復該值避免界面顯示亂碼后邏輯失控。這是工業(yè)軟件必備的“優(yōu)雅降級”設計。3.5 鍵盤交互增強讓方向鍵像Spin一樣工作用戶習慣用鍵盤方向鍵↑↓調整數(shù)值這能極大提升操作效率。我們在Edit控件的PreTranslateMessage中攔截// 在類頭文件中聲明 virtual BOOL PreTranslateMessage(MSG* pMsg); BOOL CTempDlg::PreTranslateMessage(MSG* pMsg) { // 攔截方向鍵消息僅當Edit獲得焦點時 if (pMsg-message WM_KEYDOWN GetFocus() GetDlgItem(IDC_EDIT_TEMP)) { switch (pMsg-wParam) { case VK_UP: // ↑鍵 // 模擬Spin上鍵點擊 NMUPDOWN nmUpDn {0}; nmUpDn.iDelta 1; nmUpDn.iPos 0; // 此值在OnDeltapos中不使用 OnDeltaposSpinTemp(reinterpret_castLPNMHDR(nmUpDn), nullptr); return TRUE; // 消息已處理不再傳遞 case VK_DOWN: // ↓鍵 nmUpDn.iDelta -1; OnDeltaposSpinTemp(reinterpret_castLPNMHDR(nmUpDn), nullptr); return TRUE; default: break; } } return CDialogEx::PreTranslateMessage(pMsg); }為什么用PreTranslateMessage而非OnKeyDownOnKeyDown是窗口消息而方向鍵在Edit控件中默認被其內部處理用于光標移動。PreTranslateMessage在消息分發(fā)給控件前攔截能確保我們搶在Edit處理前捕獲。return TRUE表示消息已消耗Edit不會收到從而避免光標移動與數(shù)值調整沖突。4. 常見問題與排查技巧實錄那些讓老手也撓頭的MFC“幽靈Bug”4.1 問題速查表高頻故障現(xiàn)象、原因與一鍵修復現(xiàn)象根本原因修復方案驗證方法Spin點擊無反應Edit不更新UDN_DELTAPOS消息未注冊或Spin控件未正確關聯(lián)到對話框類檢查類向導中IDC_SPIN_TEMP行的UDN_DELTAPOS是否已添加確認.h中聲明與.cpp中實現(xiàn)函數(shù)名完全一致大小寫敏感在OnDeltaposSpinTemp開頭加AfxMessageBox(_T(Hit));點擊Spin看是否彈窗Edit輸入數(shù)字后Spin位置跳變到錯誤值UpdateSpinPosition()中round()未使用或dValue * 10.0計算存在浮點誤差將static_castint(dValue * 10.0)改為static_castint(round(dValue * 10.0))對dValue做floor(dValue * 10.0 0.5)手動四舍五入輸入25.05檢查Spin位置是否為25025.05×10250.5→round251不應為250用戶快速連點SpinEdit數(shù)值跳變如25.0→25.5→26.0OnDeltaposSpinTemp中未加臨界區(qū)多線程消息并發(fā)導致GetDlgItemText讀取到舊值在函數(shù)開頭加CSingleLock lock(m_csSpinLock, TRUE);需提前聲明CCriticalSection m_csSpinLock在GetDlgItemText前后加日志觀察是否讀取到不同值Edit中輸入12.后失焦顯示12但Spin位置錯誤EN_KILLFOCUS未處理且EN_CHANGE防抖未覆蓋失焦場景添加OnKillfocusEditTemp()在其中調用與OnTimer相同的解析邏輯失焦后檢查Spin位置是否與Edit顯示值匹配高DPI縮放下Spin箭頭顯示不全或錯位Spin控件未啟用DPI感知或資源腳本未設置DPIAWARE在manifest文件中添加dpiAwaretrue/dpiAware在資源腳本.rc中為Spin控件添加STYLE WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_SETBUDDYINT在125%縮放下檢查Spin是否完整顯示4.2 獨家避坑技巧來自十年MFC維護現(xiàn)場的血淚經驗技巧1用GetWindowTextLength()替代GetWindowText()做長度預判在OnEnChangeEditTemp中若Edit內容很長如用戶粘貼了一段文本GetDlgItemText()會分配大內存。我們先用GetWindowTextLength()獲取長度若超過50字符則直接拒絕溫度值不可能超長int nLen ::GetWindowTextLength(GetDlgItem(IDC_EDIT_TEMP)-GetSafeHwnd()); if (nLen 50) { SetDlgItemText(IDC_EDIT_TEMP, m_strLastValid); return; }這能避免因惡意輸入導致的內存耗盡。技巧2Spin位置同步的“原子性”保障SetPos()和SetWindowText()是兩個獨立操作若在二者之間發(fā)生線程切換可能造成Spin位置與Edit值不一致。解決方案是封裝為原子操作void CTempDlg::SetTempValue(double dValue) { // 先更新Edit CString str; str.Format(_T(%.1f), dValue); if (str.Right(2) _T(.0)) str str.Left(str.GetLength() - 2); SetDlgItemText(IDC_EDIT_TEMP, str); // 再更新Spin確保順序 int nPos static_castint(round(dValue * 10.0)); CSpinButtonCtrl* pSpin static_castCSpinButtonCtrl*(GetDlgItem(IDC_SPIN_TEMP)); pSpin-SetPos(nPos); m_strLastValid str; // 同時更新最后合法值 }所有數(shù)值變更包括Spin滾動、Edit輸入、外部API調用都走SetTempValue()徹底消除狀態(tài)不一致。技巧3調試時注入“可視化日志”MFC調試不便我習慣在關鍵路徑插入OutputDebugString()配合DebugView工具實時監(jiān)控OutputDebugString(CString(_T(Spin Delta: )) CString(_itot(pNMUpDown-iDelta, szBuf, 10)) _T(, Current: ) strCurrent _T(\n));比斷點更高效且不影響UI線程。技巧4應對“粘貼”輸入的終極方案用戶可能粘貼123.45, 67.89等多值需在OnEnChange中檢測剪貼板if (::IsClipboardFormatAvailable(CF_TEXT)) { if (::OpenClipboard()) { HANDLE hClip ::GetClipboardData(CF_TEXT); if (hClip) { char* psz static_castchar*(::GlobalLock(hClip)); if (psz strstr(psz, ,)) { // 包含逗號視為非法 AfxMessageBox(_T(請勿粘貼多值)); ::CloseClipboard(); return; } ::GlobalUnlock(hClip); } ::CloseClipboard(); } }5. 進階擴展與工程化實踐從Demo到工業(yè)級模塊的跨越5.1 封裝為可復用控件CTempSpinEdit類的設計將上述邏輯封裝為獨立類可復用于多個對話框。核心設計繼承CWnd而非CEdit因需同時管理Edit和Spin采用組合模式構造函數(shù)接收父窗口和IDCTempSpinEdit::Create(CWnd* pParent, UINT nIDEdit, UINT nIDSpin)內部持有CEdit和CSpinButtonCtrl指針通過SubclassDlgItem()關聯(lián)提供SetRange(double min, double max, double step)接口隱藏底層整數(shù)映射細節(jié)事件回調機制ON_NOTIFY_REFLECT將UDN_DELTAPOS轉發(fā)給父窗口或提供OnValueChanged虛函數(shù)供派生類重寫。這樣其他開發(fā)者只需三行代碼即可復用CTempSpinEdit m_wndTempCtrl; m_wndTempCtrl.Create(this, IDC_EDIT_TEMP, IDC_SPIN_TEMP); m_wndTempCtrl.SetRange(-50.0, 200.0, 0.1);5.2 多語言支持字符串格式化的本地化適配str.Format(_T(%.1f), dValue)在德語系統(tǒng)中會輸出25,0逗號作小數(shù)點但Spin邏輯仍用英文格式解析。解決方案使用_tcsncpy_s()和_tcscpy_s()配合locale更優(yōu)方案在SetTempValue()中用std::stringstream配合std::locale()std::wstringstream wss; wss.imbue(std::locale()); // 使用系統(tǒng)locale wss std::fixed std::setprecision(1) dValue; CString str wss.str().c_str();5.3 單元測試要點如何為MFC UI控件寫測試MFC UI難以單元測試但我們可測試核心邏輯ParseInput(const CString str)函數(shù)輸入字符串返回double和bool成功標志CalculateNewValue(double current, int delta, double step)函數(shù)輸入當前值、步進量返回新值FormatOutput(double value)函數(shù)輸入double返回格式化CString。用Google Test編寫TEST(TempSpinLogic, ParseValidInput) { double val; EXPECT_TRUE(ParseInput(_T(25.0), val)); EXPECT_DOUBLE_EQ(val, 25.0); } TEST(TempSpinLogic, FormatZeroDecimal) { EXPECT_STREQ(FormatOutput(25.0), _T(25)); }UI層只做薄包裝業(yè)務邏輯100%可測試。我個人在實際使用中發(fā)現(xiàn)最有效的調試方式是在OnDeltaposSpinTemp和OnEnChangeEditTemp中各加一行OutputDebugString用DebugView實時觀察消息流。曾有一個Bug困擾團隊三天Spin點擊后Edit更新但再次點擊時數(shù)值不變。最終發(fā)現(xiàn)是GetDlgItemText讀取到了Edit的舊緩存值——因為SetWindowText后未調用UpdateWindow()強制重繪。加上UpdateWindow()后問題消失。這種細節(jié)只有在真實鍵盤敲擊、鼠標點擊的節(jié)奏中才能暴露。所以別信“理論上應該沒問題”每個SetWindowText后都值得加一行UpdateWindow()保平安。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
黄片在线免费在线观看| 亚瑟国产精品久久无码| 日本色色色视频| 97视频网站在线观看| 97se亚洲综合自| 人妻啊啊人妻啊| 色妇综合网| 欧美懂色综合网| 人人操,操人人| 婷婷九月国产| 99久久com免费视频′| 一区二区影视| 偷拍综合亚洲| 天天透伊人| 久久久国产av美女私房| 夫妻AV网站| 久7色| 色香91| 91狠| 少妇无码999| 超碰成人最新最好看| 97天天在线| 久操com| 久操av在线| 日夜啪电影| 亚洲日韩成人性爱视频| 98人妻精品一区二区色欲| 老熟妇综合| 91精品国产综合久久久蜜臀| 国产精品秘 福利姬在线观看| 精品人妻一区二区三区在| 在线观看A啊啊啊| 亚洲人精| 欧美九九爱| 九九av| 亚洲一曲日韩精品| 精品视频在线观看精品| 老熟女网站| 骚熟女AV网| 热的中文 热的有码 热的国产| 国产黄色影片在线观看| 人人摸.人人色| 91AV入口| 色九久| 色色99| 欧美页片| 97精彩视频网站| 啊啊啊好舒服好爽啊啊啊视频| 韩国一级婬片A片AAAAA| 日韩欧美成人午夜福利| 亚洲午夜免费狠狠干| 夜夜草我| 99热最新| 夜夜嗨AV一区天天| 亚洲一区二区三区麻豆传媒| 亚洲影视第一页| 五月天激情小说| 免费A V在线| 91在线无码精品秘 软件| 欧美亚洲尤物久久| 大香蕉五月天| 99青草| 美腿丝袜偷拍亚洲欧美| 久男人久久| 岛国色情视频在线观看| 欧美日韩小说| 五月天我淫我色av| 18禁精品网站在线看| 日韩成人精品视频自拍| 国产按摩一区二区三区| 少妇500双飞99| 欧美激情久久久久| 超碰欧美| 男人天堂久久精品| 97超碰中文字幕| 欧美乱欲| 激情丁香婷婷| 亚洲国产丝袜在线观看| 人乳av| 午夜精品久久久久久久99蜜桃一| 精品少妇一区二区| 国产精品日本无码A片| 97AV爱| 久久九九一区二区三区成人| 99草精| 强被迫伦姧在线观看无码网站| 曰韩人妻中文字幕在线| av大香蕉| 欧美精品庄| 国产www色在线观看| 91在线页| 黄片视频观看| 欧美婷婷久久| 夜夜草天天| www五月| 人人操人人精品影片| 伊人专区一区二区三区| 97久久久久久久精| 亚洲情色91| 亚洲蜜臀精品视频久久| 性爱Av免费| 国产原创精品| 欧美性爱综合,免费| 丁香六月激情综合| 一中国女人毛片水真多| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 欧美97网| 久久久久久久人妻| 久久久久女教师免费一区 | 一本一道久久综合久久| 日韩中文字幕二区| 色色97爱| 亚洲精品丝袜| 久久riav中文精品| 五月天九九日国产精品一区二区三区| 日韩一区二区高清在线观看的| 欧美白嫩女HD| 狠狠色综合网| 国产日韩区| 超碰日韩人妻| 久久嫩草国产成人一区| 97超碰色情| 欧美熟妇亚洲版| 无码直播久久久| 黑人精品久久97| blacked精品一区国产| 性色高清..……| 婷婷五月天av| 日韩99999色| 九九久久玖玖| 亚洲色图欧美色图制服诱惑| 岛国黄| 欧亚乱色熟女一区二区| 欧美色图片欧美色图| 亚洲欧美经典一区二区| 99亚洲国产精品色一区二区三区| 91九色丰满高潮| 国产13区| 91久久久久久| 国产树林里野战在线看| 国产精品视频自拍在线| 五月婷婷六月丁香| 日韩性爱1级片视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 中 文字幕一区二区三四 五 区日 日 骚| 天天伊人| 91制服丝袜| 爱妻综合网| 狼人综合婷婷激情四射 | 婷婷中文字幕| 成人午夜无码视频| 超碰在线日韩一区| 福利天堂| 91影视亚洲| 高清不卡 中文 人妻| 丰满人妻一区二区三区免费| 98福利在线视频| 日本伦理一区二区| 91久青| 日本三级中国三级99人妇网站| 中文字幕日韩专区精品系列| 综合久久久久久久久91| 天天天干977| 怡春院久久| 97欧美综合网| 欧洲精品二区| 久久在线观看免费视频| 手机在线播放国产福利| 蜜乳av一区二区| 天天看精品动漫视频一区| 亚洲学生妹高清av| 一起草欧美| 国产理论视频在线播放| 激情四射五月天| 精品区9| 美日韩一二三区| 久久精品91| 精品熟女呻吟久久91| 亚洲色天| 亚洲AV成人无码久久精品播放| 少妇毛片久久| 一区二区偷拍拍视频| 国产超碰国产97| 欧美78| 亚洲性猛| 插入逼91| 欧美性爱在线无码| 国产av白丝| 久热久操| 91原创在线观看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 941超碰| www.久久超碰| 中文字幕视频在线观看一区二区| av在线一区二区三区| 欧美片第一页| 啊操爽品善一区二区三区| 天天综合日韩网| SUV一区二区在线看| 91N综合网| 91亚洲色人| 久热九九| 女上位精品在线| 91狠狠| 国产精品毛片?v一区二区三区| 日韩AV一起草| 色69大色97香蕉| 中字幕人妻一区二区三区| 久久久久国产精品片区无码直播| 午夜福利久久久噜久噜久久综合| AV女资源| 99无码精品| 亚州精品人妻一二三区| 国产精品成人无码av无码免费| 成人国产视频在线观看| 免费簧片在线观看| 狠色婷婷久久一区二区三区_| 加勒比AV天堂| 日日操丁香五月天| 日本在线伊人啪啪| 色综合久久久久| 国产日韩手机视频在线| 日韩乱码Av| 亚州综合色| 欧美日韩m| 国产一级内射高清视频| 香蕉一区二区三区在线视频| 成人性爱免费播放| 中文在线视频| 99ri视频| 岛国片在线视频网站| 日韩ab网 | 91精品91久久久中77777| 四虎影视 亚洲无码| 久久草大香蕉| 91视频精品| 久久 久久国内精品亚洲| 91成人在线免费视频| 免费视频观看60秒| 自拍欧美| 久久久久久夜夜夜夜夜| 九热久| 精品无码久久久| 51久久夜色精品国产麻豆| 天天综合~91| 91人人看| 99在线精品视频| 日语五十路和六十路亚洲国产精品 | 久久久久久久国产| 色色色欧美| 午夜.DJ高清在线观看免费7 | 国产野战露脸在线播放| 天天舔日美女视频| 亚洲91在线播放影院| 国产人妻天天干精品| 澳门人妻久久| 日韩一级片在线看| 国产久久av| 亚洲视频精选| 国产精品另类| 精品白丝一区| 欧美嗯啊……在线观看视频免费| 偷拍自拍在线视频观看| 国产一级内射无挡观看| 欧美亚洲中文| 日韩超碰97| 久久9免费视频| 黄色一区三区| 91九色丰满高潮| 俞拍自拍| 国产精品久久久久999| 久久日本熟女精品一区| 久久久婷婷| 怡红院怡春院| 欧美爆操91| 国产精品色哟哟| 人人超碰在线观看黄| 婷婷综合在线观看| 久久久久久九九九九-美女久久久久久久-成人AV | 女人一区| 人妻熟女一区二区| 超碰久在线天天做| 精品少妇人妻一区二区三区| 欧美综合色图片| 在线中文AV| 欧美色图小说综合| 97免费视频在线观看视频| 色哟哟1区2区| 伊人伊人LD| 日本九九久久99| 丁香婷婷激情五月天无毒不卡| 中国黑人三级片网站上区| WWW4虎| 亚洲天堂电影精品一区| 99热精品青草在线| 亚洲色图第四色| 亚洲性刺激| 免费试看60秒| 91在线精品| 人妻AV在线| 色婷婷综合久久久久中文一区二区| 久久精品72| 97精品网站| 蜜臀网址在线| 变态综合色| 精品无码一区二区三区色欲| 成人午夜小视频手机在线看| 噜噜噜在线视频| 国模一区二区三区| 欧美淫乱视频| 精品高清一区二区三区三州| 丁香五月成人| 久久成人网站| 91天美免费| 热久久九九热| 600国产精品视频| 福利社区午夜一区二区| 91色久| 日日干夜夜干| 精品国产久久乱码| 51国产午夜精品视频| 天天色播亚洲综合网站| 亚洲日韩欧美一区二区| 人人妻人人爽一区二区三区| 欧美日韩国产高清在线一二三区 | 90后后入| 97色亚洲| 人人喜人人妻| av黄图片在线观看| 亚洲色图大香| JIZZJIZZ亚洲女人被躁| 无码一区二区三区四区五区六区七区八区九区十区视频 | 日韩精品一区二区日韩| 国产肏屁眼视频| 日韩无码成人电影| 97资源站日韩| 精品国产乱码久久久久久久久1| 91免费看中出视频| 免费看毛片操穴| 日韩av在线精品观看| 裸模AV女优| 成人无遮挡毛片免费看| 久久久久久久久久久久黄色| 97久久超碰| 中文字暮97| 麻豆一区二区三区在线看| 女人被添高潮免费视频| 97人妻色| 日语五十路和六十路亚洲国产精品| 精品九九淫乱男| 天美传媒Av在线| 日韩成人精品| 97资源站久久| 久久久久久久久九九久孕交| 超碰97欧美日韩| 婷婷人妻激情| 强上我不卡卡| 后入式福利| 狠狠爱夜夜| 少妇综合网| 国产精品老师| 九一综合网| 日韩无码一级黄色av片| 韩国三级理论在线| 操91| 国产亚洲精品农村妇女| 一本一首道人妻少妇免费久久| 欧美专区17页| 中文字幕一区二区韩| 91亚洲影院综合| 一区二区乱码福利| 亚洲天堂区| 国产一级高清免费观看| 中文字幕在在线观看网站| 欧美日韩插逼视频| 屌逼麻豆| 国产真实野战在线视频| 酒色综合网| 五十路熟女工口 | 久久一区二区三区四区五区| 91蜜臀在线久久久久| 日本十八禁免费看污网站| 久久婷婷亚洲欧| 99操99| 国产精品福利视频| 秋霞鲁丝午夜无码一区二区三| 国产操伦| 久久久久人妻二区精品叶可怜| 97超碰中文在线| h色99999| 91新在线欧美| 欧美黑人性猛交91| 亚州AV无码国产精品| 一区二区乱码福利| 男人天堂无码| 97在线资源| 青女偷拍网| 亚洲射综合网| 最新欧洲欧美日本激情网站| 狠狠色噜噜狠狠狠狠狠色综合久久| 免费视频一二三区| 欧美在线亚洲| 亚欧美综合网。| 亚洲砖码砖专无区2023| 小说区 图片区色 综合区| 久久久久七视频| 嗯嗯嗯啊啊啊操的我好爽 | 久久精品国产97欧美精品亚洲| 日韩八十路老熟女| chaopen97久久| 后入综合久久| 91M一社| 麻豆av一区二区| 九九九九9999| 天天摸天天插天天日| 天天影视网综合少妇| 国产成人自拍视频在线| 韩国一级婬片A片AAAAA| 日韩免费性爱视频在线观看| 亚洲天堂热| 入口操逼网站| 精品一区二区综合熟妇| 蜜乳AV色欲AVAV无码| 色色色综合| 亚州乱码中文字幕综合久久久| 一级啊性爱在线视频| 人人操人人精品影片| 亚洲啪啪视频免费| 国产60区。| 亚洲精品一二牛牛| 九九九久久久久| 国产美女裸体秘 永久无遮挡| 亚洲丝袜天堂| 中国一级操逼视频| 国产精品97超碰| 国产精品青草综合久久| 日本二三四区| 精品人妻1237| 这里只有精品视频在线观看麻豆| 中文字幕第95页| 丁香六月婷婷| 9丨亚洲一区二区在线| 91精品婷婷国产综合久久竹菊| 无码操逼网| 综合情欲网| www.激情| 中文字幕日韩电影人妻| 人妻精品一区一区三区蜜桃91| 国产又色又爽又舒服的三级视频 | 99色日| www..com操老师| 91超碰丝袜制服| 国产欧美精品日韩区二区麻豆天美| 成人精品在线免费视频| #NAME?| 男人天堂2012| 26uuu偷拍亚洲欧洲综合| 九九九九97| 欧美日韩99精品麻豆传媒| 黄色激情电影在线观看| 中文字幕成人乱码熟女精品国50 | 人人操人人狠狠操| 九九九精品成人免费视频小说| 欧美激情色婷婷花野真衣一区二区| JIZZJIZZ国产精品喷水| 国产在线综合福利网站| 后入式999| 国产久久日韩网站导航| 啊v视频在线观看| 高清无码久操视频| 老司机香蕉久久久久| 五月天久久婷婷亚洲| 国产成人+综合亚洲+天堂| 亚洲无线观看久久| 91精品91久久久久77777| 欧美美女在线高潮999| ?亚洲伊人伊成久久人综合网| 亚洲国产综合视频| 99视频自拍区| 久久久专区| 久久99国产综合精品女同| 99久久精品无码一区二区| 亚洲在线| 天天cao在线| 国模91| 欧美精品双插| 成人精品电影| 又黄又爽在线观看视频| 成人黑料社久久| 操逼片国产| 免费操逼91| 久久人妻熟女一区二区| 国产AB视频| 99久在线精品99re8a| 天天看天天综合成人网| 婷婷性爱| 日本女人操逼| 91精品丝袜久久久久久| 日韩欧美字幕亚洲一区二区| 欧美人妻久久精品二区三区| 性爱综合一区二区| 亚洲一区中文精品| 玖草在线视频| 欧美综合天天| 极品另类| 综合久久97| 99re在线| 91视频综合网| 日本阿v天堂在线观看| 肥臀熟女一区二区三区视频| 狠狠色五月亚洲91| 后入精品| 人妻天堂网| 午夜精品久久99蜜桃的功能章节| 黑人性欧美| 欧美中日韩XXXX| 欧美综合综合| 国产成人五月天丁香花| 91亚洲电影| 视频不卡中文字幕| 一区二区乱码福利| 伊人网免费视频| 亚洲啪啪视频免费| 天天色黄色影院天天操| 国产精品久久久无码AV网站| 色香色欲天天综合网天天来吧| 人人爱人人操人人性| 亚洲精品中文字幕一区在线视频| 巨爆乳肉感一区二区三区竹菊影视| 国产91久久九九免费精品无码| 日韩AC| 亚洲精品男人的天堂| 日韩欧美亚洲国产日韩| 国产青青美女玩逼视频| 一本一道久久综合久久| 蜜臀久久99精品久久久久久-DVD原版全| 插入逼91| 福利在线观看一区二区| 91碰碰| 91在线免费观看处女| 欧美亚洲se91| 999久久久九九九九| 亚洲春色一区二区三区| 约操熟妇| 天天流夜夜操| 亚洲高清少妇| 九九九精品| 日韩色欲久久一二三四区| www色色色com| 国产精品熟女九九九| 骚日日av| 久久 国产 无码| 日日碰狠狠添天天爽超| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 97一区二压| 中文字幕在线免费观看 | 蜜臀99久久精品久久久懂爱| av绯色| 欧美图片偷拍| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 五月综合视频| 我中文字幕6区| 人妻久久一区二区三区| 精品久久久久av影院| 久热伊人99re| 亚洲成人在线乱码色午夜| 一本精品日本在线视频精品| 亚洲无码色| 亚洲脚交| 国内毛片婷婷六月色| 熟妇人妻一区二区三区| 中文字幕乱妇免费视频| 久久精品亚洲成a人天堂| 日韩精品9999| 国产高清视频无码在线| 啊…啊…操我用力操我| 91亚洲欧美综合高清在线| 久久久久免费看少妇A片特黄| 校园春色制服丝袜中文字亚洲 | 国产九九久久久精品| 美女黄页网站| 天天干人妇| 91久久国外网| 久久久久久久亚洲Av无码| 啊嗯好大视频在线观看| sewuyueav| 无遮挡猛进视频免费无限观看| 9999久久久久| 日韩Va亚洲va欧美Ⅴa久久| 97视频620| 午夜亚洲WWW湿好大| 大香蕉伊人亚洲| 97超碰色色| 日韩免费人妻色情网站| 91色婷婷综合久久中文字幕二区| 色九九综合| 好涩综合| 玖玖视频在线资源一区二区三区| 亚洲天堂男| 伊人亚洲国产一成人久久精品,久久| 综合大香蕉美。| 精品人妻美妇91job| 综合网97| 啊视频在线| 久久岛国| 91啪9色| 国产辣妈在线视频福利| 激情文学 国产一二三aV| 黄色操人| 精品久久大胆人体| 欧美日韩性爱操大逼| nuu12国产麻豆精品| 97色婷| 青青久久艹| 天美传媒av 在线| 精品人成视频在线观看| 夜夜嗷嗷一区二区| 艹比视频国产精品| 狠狠爱夜夜| 中文字幕乱码人妻一区二区三区,99精品| 亚洲av性爱电影| 怡红院成人av| 综合色色网| 亚洲欧美日韩激情不卡| 久久水蜜臀亚洲AV无码精品| 伊人影院综合是一个与深夜成人在线| 熟妇一区,二区,三区。| 亚州伊人色综台| 国产精品人妻一区二区| 嗯嗯啊啊的视频| 久久人妻视频| 2019精品国产无码成人| 久久久久久裸体| 天天综合网~69| 天天色黄色影院天天操| 99在线观看视频在线高清| 老鸭窝亚洲毛片| 91社操逼| 亚洲加勒比| 中文字幕文字幕无码一区二区三区电影99| 自偷自拍的亚洲视频| 强奸乱伦 亚洲一区| 久久精品男人的天堂| 欧美综合97www| 蜜乳AV一区二区三区四| 亚洲影院成人| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 九色 人妻 大香蕉| 一区二区三区精品视频| 日韩欧美操逼xxx| 加勒比99999| 99xav| 粉嫩国产精品久久粉嫩| 國產尤物AV尤物在線觀看| 91黑人狂躁丰满熟妇| 97在线观看视频| 神马久久啊啊| 天天操天天射青青草| 免费一级毛片在线视频观看| 中文字幕精品一区欧美| 五月天亚洲色图| 亚洲天天精品| 99热 按摩 日韩| 伊人97超碰| 丁香婷婷啪啪| 中文字幕aⅴ在线视频| 国产亚洲精品一区二区三区| 大香蕉中文在线| 密臀在线视频| 日韩欧美蜜桃精品久久中文字幕久久| 国产传媒1234区| 97网址www| 小泽玛利亚一二三| 国产欧美一区激情交| 在线无码操| 操迟操逼在巾线Fre看| 翔田千里A片一区二区| 一本久道久久综合狠狠爱一密臀精| 2019午夜福利视频| 天天内射| 91AV天堂| 2026国产精品视频| 大香蕉欧美国产日韩高潮| 伊人操操| 欧美国产成人在线| AV在线资源| 精品一区二区三区四区女| 成人网欧美风情| 婷婷色香| 91性高| 欧美亚洲涩涩| 国产精品在线一区二区| 精久久久| 老熟女天天操| 日韩人妻无码不卡网站| 97超碰中文在线| 天天综合欧美| 绯色一区二区三区不卡少妇 | 国产99999久久精品| 日韩精品国模| 久久久久久人| 2017天天插| 亚洲欧美色图片| 人人模人人看| 7777奇米影视久久| 日韩欧美国产一区二区三区四区| 国产精品呦一区二区三区| 国精精品无码一二三区水多多| 熟女精品va中文字幕| 在线视频日韩欧美国产| 精品久久一区二区三区四区五区| 3571色综合一区二区二区| 日本亚洲vr欧美不卡高清专区| 激情图片伦理国产一区二区日韩| 欧美日韩婷婷中文| 欧美图片色五月天| 亚洲九九九| 操迟操逼在巾线Fre看| 色官网在线| 久久婷婷国产一区二区色| 69综合网| 亚洲在线综合| 国产毛片毛片4p懂色| h4610国产人妻| 97碰在线视频| 精品无码一二三四区| 一本色道久久综合熟妇| 东京热男人天堂| 強姦亂倫a| 国产精品老师| 亚洲av热热色| 欧美96交| 国产Av超碰| 亚洲国产日韩欧美熟妇在线| 国产白领连续中出在线观看| 骚逼自拍99| 久久久新亚洲AV| 欧美成人一级免费电影| 九九毛片这里只有精品| 九九九草| 嫩草美女久久| 亚洲五月丁香花狠狠干一区二区三区| 中文字幕久久精视频久久大全| 9美女超碰在线免费观看| 一级AV性爱| 成人av免费观看| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 一本一道vs波多野结衣| 嗯嗯嗯嗯啊啊啊好紧好大| 天天天做天天天爱天天天爽| 岛国黄片网站| 日日干日日| 九九九九一级| 老熟女搡BBBB搡BBBB视频| 日本欧美成人片AAAA| 天天激色| 国产三级资源在线观看| 91狠| 四虎精品永久在线观看| 免费伦费视频在线观看| 日韩中文字幕熟妇人妻| 亚洲人妻爽爽爽| 蜜乳AV网址| 精品一久久久| 日本精品中文字幕视频| 又大又白奶子| 天天天干977| 3p国产色噜噜一区| 操91| 国产精品欧美日韩久久| 国模不卡一本二本三电影| 日韩97| 青青草原人妻| 国内伊人久久久久久网站视频| 亚洲九区| 欧美春色| 五月丁香大香蕉| 久超碰这里只有精品| 日韩性爱免费视频在线网站| 欧美91网站| 琪琪精品免费一区二区三区| 亚洲成人精品久久久| 久久精品国产亚洲AV清纯| 午夜天天碰综合视频| 伊人加勒比| 98一区二区精品| 日本精品五区| 九久久九精品视频| 欧洲性爱无码区| 一区二区三区四区五区高清无码永久视频 | 女优免费一区二区永久| 人妻少妇精品久久久久久久| 少妇高潮99p| 久久午夜色播影院免费高清| 天天欧美色| 蜜臀无码视频在线观看| 99热精品青草在线 | 91爱啪| 日本人体九九九九九九| 亚洲欧美色图| 熟女中出视频| 色色色色日本| 人妻色情天天操| 三级三久久线久久99久目本WW| 欧美同性恋 的搜索结果 - 91n| 日本3级一区二区免费| 亚洲一区二区AV| 天堂av2019| 乱伦色图网址是多少| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 久草精品一区 | 日韩综合成人免费视频| 欧美第二页午夜| 岛国精品视频在线观看| 欧美78P| 超碰碰97| 人人操人人摸人| 啊v在线观看视频| 九一综合精品视品av| se01国产在线视频| 综合熟妇一区二区三区| 五月开心网| 国产精品亚洲色婷婷久久久| 精品中文一区二区| 99免费视频| 日韩精品色呦呦| 欧美综合色综合| 日韩人妻少妇中文字幕| 操逼片国产| 成人三级片一区二区三区视频| 久久人妻四季| av天堂5| 大学生美女口爆| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 日本性交操一区二区不卡系列| 操逼操2| 午夜操逼不卡| 欧美一级A片在线看视频性色| 婷婷色网| 欧美 传媒 麻豆 日韩 偷拍| 99这里都是精品| 久久激情婷婷| 天天色黄色影院天天操| 2020国产精品| 操我啊啊啊啊啊| 狠狠爱夜夜干| 欧美亚洲91| 狠狠中文字幕| 五月丁香色婷婷| 中文字幕av久久爽Av| 色网综合网| 97chaopengongkai| heyZO天然素人无码AⅤ专区| 熟妇操花| 亚洲国产综合久久久性感熟妇| 婷婷五月天无码 | 美女诱惑1区2区| 大乔未久88一区| 久久伊人影院| av天堂天堂av日韩| 六月婷婷激情| 无码视频一区二区| 91欧美网| 精品亚洲国产成人av网站| 韩日精品四区| 无码人妻精品一区二区三区九九| 精品人妻丰满熟妇一区二区三| 国产多人在线观看视频| 99久久综合网| 蜜臀99999| 亚洲图片91| 日韩无码黄色片| 精品久久久久久亚洲| 歐美性天天| 久久久久久久| 久久精品中文字幕无码l| 天天欧美色| 天天在线91| 免费的黄片有限公司| 国产999精品久久久久久| 强奸熟女一区二区三区| 极品销魂美女一区二区| 色色激情五月天| 国产免费一区| 八戒午夜福利理论片| www.91色综合| 国产夫妻性生活视频| 人妻 欧美亚洲| 看免费一级在线播放毛片| 色婷婷99| 青青草一本道福利视频| 黄页网站免费高清在线观看| 天天摸夜夜摸| 色图综合网| 成人在线日韩| 久久久久久99999国产精品| 丁香九月 婷婷| 亚洲AV乱码专区国产噜噜亚洲| 99999久久精| 激情五月天社区| 久草精品视频| av强奸乱轮| 久久伊人青青草| 国语对白露脸XXXXXX| 久超碰在| 伊人99热| 天堂av最新电影网| 乱论91| 精品然女一区二区| 日韩欧美大片免费高清啪啪| 色哟哟国产精品免费网址| 麻豆 美女 丝袜 人妻 中文| 色官网在线| 国产精品久久久午夜夜伦鲁鲁| 亚洲人妻中文高清| 久久久久921| 精品一区二区综合熟妇| 老司机午夜福利视频一区二区| 大香蕉黄色一级片免费看| 人妻精品一区二区全免费| 亚欧高清| 加勒比综合九九99视频在线播放| 中文字幕人妻资源在线| 亚洲精品天天影视综合网| 无码久久国产| 欧美精品 - 91爱爱| 欧 美 自 拍 偷 拍| 成人一区二区三区四区| 欧美日韩黄片精品在线| 国产熟妇一区二区| 双插性欧美一二三区| 久久精品高清无码一区| 久久精品国产72国产精品福利 | 欧美亚性天堂| 97日韩| 亚洲熟女乱色| 9丨亚洲一区二区在线| 美女诱惑在线一区| 国模艳艳啪啪一区| 91精品操美女| 五月天婷婷基地| 天天综合网网欲色| 精品国产一区二区三区久久久蜜臀| 少妇一区二区三区精选| 精品人妻一二三四区视频| 欧美劲爆视频一区二区| 亚洲午夜精品久久久中文影院| 天天插天天插| 亚洲视频中文一区| 人妻酒店出差被中出免费在线播放| 乱伦av国产| 久久久月天| 黑操B| 天天躁日日躁AAAAXXXX国产| 加勒比综合a∨| 狠狠干婷婷| 日韩成人高清一区二区| 久久综合av| 综合久久婷婷| 不卡av免费在线网址| 日韩久久艹| 人妻av在线| 乱操乱伦AV| 久久是精品| 欧洲天天在线| 福利操逼| 中文字幕视频在线观看| 91嫩草欧美| 最新国产精品久久精品| 蜜桃av色偷偷av老熟女| 久草男人天堂| 激情久久久| 在线有码中文字幕| 99色在线| 国产精品2020| 亚洲成人久久美女| 欧美乱伦专区| 中文字幕午夜精品久久久| 一区二区三区 丝袜 高跟 美腿| 精品九九国产无码| 香蕉精品二区二区| 97久久精品国产| 九九色热| 人人操人人操人人操人人操人人操人人人11.CM| 208天天久久九九九| 成人无码专区精品视频| 欧美黄片视频在线观看免费 | 日韩av乱伦| 综合伊人激情| 男人的天堂Va| 日欧毛片久久| 欧美激情总合网| 牛牛aV| 国产JDAV无码视频在线观看| 天美av在线| 亚洲欧美一区二区不卡视频播放| 五月天激情网图片| 美女午夜福利免费视频| 亚洲综合电影| 综合网亚洲在线| 亚洲性少妇| 这里是精品| 婷婷91| 国产69精品久久久久99尤物| 日韩精品在线视频,日韩精品……| 人人九九精| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚欧无码在线| 国产日韩精品suv| 国产成人五月天丁香花| 欧洲亚洲人人爽爽视频| 日韩av熟女一区二区三区成人| 天天插天天射| 一起草精品人妻| 国产av强奸美女| 91丨国产丨白浆秘 洗澡动漫| 欧美人妖内射| 久久久熟女一区| 中文字幕精品乱码| 亚洲av热热色| 大香蕉在线视频15| 女优免费一区二区永久| 久久婷婷色| 91天堂色男人的天堂| 国产在线强奸视频| 亚洲欧美日韩制服另类| 人妻一区二区三区熟女| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 亚洲国产av中文字幕久久| 国产女人视频三四五区| 97欧美综合网| 欧美啪啪啪91| 激情文学小说一区二区| 色www精品视频在线观看| 日han少妇无码| 色鬼在线综合| 欧美日韩资源在线| 精品国产自在在线99| 黑丝少妇| 精品久久視頻在线| 伊人成人中文字幕久久网| 久色网| 婷婷五月综合在线| 精品成人av一区二区三区在线| 亚洲AV无线| 一级aaaaa欧美中文字幕录像片| 四虎国产精品永久入口| 久九九九| 亚洲 暴爽 AV人人爽日日碰| 蜜臀久久99精品久久久久| 日少妇视频| 蜜臀视频网站| 欧美在线播放| 中文字幕丰满人妻日本| 秋霞 色色| 99人妻碰碰碰久久久久禁片| 亚洲97成人在线观看| 国产a片操逼| 操逼不卡中文字幕| www.大香| 国产人妻天天干精品| 97人妻碰碰中文无码久热丝袜| 久久女婷| 1956日韩精品| 日韩在线97| 97超碰巨乳| 在线播放中文字幕| 人妻91少妇| 高清国产精品福利网站| 国产黄色在线播放观看| 免费无码国产精品v片在线观看| 亚洲全色网| dy888午夜老子影视达达兔| 大香蕉欧美| 在线中文字幕| 伊人精品久久网站| 丁香五六月啪啪| 伊人一区二区在线播放| 波多野结衣被操50分钟免费视频| 中文一区在线视频| 久久亚洲婷婷| 性色avv| 日韩9999| 东北操逼| 嗯嗯不要视频| 日本国产亚洲一区在线观看| 亚洲精品人妻在线| 强免费黄色网址| 久久黄黄| 精品视频97| 一区超碰一区| 夫妻天天操岛国视频| 老子午夜伦不卡影院| 亚洲精品aa久久伊人| 欧美夜夜狠| 91最新综合| 99精品丰满人妻无码| 91成人无码| 天天插夜夜操| 国产精品秘 福利姬在线观看| 超碰爽人妻熟女Av| AV一二区| 亚洲成人妻日韩在线| www欧美91| 影音先锋新男人| 婷婷久热| 99啪啪| 欧美图片校园春色| 翔田千里A片一区二区| 亚洲一本色道中文无码aV天美| 东京日日夜夜| 日本午夜精品理论片A级APP发布| 蜜臀久久一区二区| 亚洲污污网站| 欧美色爱综合| 国产欧美在线观看免费观看| 啪一啪免费视频| 嗯啊啊啊轻点视频| 色欲久久99精品久久| 在线播放成人高清免费视频| 亚洲精品日韩国产欧美| 精品国产自在在线99| 大干人妻| 奇米四色网| 亚洲国产第一页综合视频| 加勒比伊人综合| 日韩视频中文字幕| 俺去俺来也在线www| 人妻日日夜夜精品| 久肏视频字幕| 懂色av色欲av蜜臀av| 日韩偷拍色图| 97在线观看视频| 亚洲国产精品9999在线观看| 欧美玖玖爱免费玖玖| 920日本午夜免费| 极品粉嫩一区二区| av日韩中文字幕| 欧美性爱无码一区二区三区| 精品女人999| 午夜视频久久久| 成人性爱视频在线看| 91丝袜美女| 这里都是精品| JIZZJIZZ国产精品喷水| 上床不卡网站| 懂色aV一区二区天美传媒| 国内三级自拍小视频在线观看| 97爱b| 色欲Av人妻精品一区二| 久久99网站| 中文字幕精品三级久久久| 亚洲图片激情综合另类| 狠狠躁AV| 久久久夜夜夜| www九九热| 夫妻AV网站| 日本欧美韩国国产在线| 人妻夜夜爽天天爽麻豆三区网站 | 日本Xx性爱|