例說 WIN SDK 視窗子類化技術
1.什麼是視窗子類化技術?
比喻:在學校的時候,老師在課堂給你上課,老師講解的東西(這裡就是windows的訊息),你就是視窗,專門接受老師所講授的訊息,這時候老師講什麼你最清楚,有天,你病,沒去上課,你叫同學幫比補課,老師把訊息傳給同學,同學在給你講,這時候,同學有可能漏講一些知識,也可能自己補充一切知識,然後在給你講。
第一種情況:老師給你講 (這個就是未視窗子類的時候)
第二種情況:老師給同學講,同學在給你講 (視窗子類化的時候)
也就是說: windows響應的訊息,全部由你自定義的視窗函式來處理,是忽略某些,還是保留某些都由你說了算了,然後在傳回給主視窗處理。
2.如何 實現視窗子類化
參量:你所需要的子視窗的控制程式碼(子視窗可以是控制元件,或者任意的子視窗),萬物皆控制程式碼
LONG SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong );
- hWnd = 將要實施子類化的視窗的控制程式碼
- nIndex = 函式了功能索引
GWL_EXSTYLE 設定視窗的擴充套件風格.
GWL_STYLE 設定新的視窗風格
GWL_WNDPROC 設定新的視窗處理函式地址
GWL_HINSTANCE 設定新的應用程式控制程式碼
GWL_ID 設定新的視窗標識
GWL_USERDATA 設定一個與這個視窗相關的給使用者使用的32位的資料 - dwNewLong = 用來更新的資料
- 該函式返回以前的視窗過程的地址,要儲存下來,用來恢復的
2.一個例子說明:用視窗子類化技術 來選擇Edit控制元件輸入的字元
目的:要求編輯框不能輸入0~9的數字 。
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include<Commctrl.h>
#include "windef.h"
WNDPROC OldProc;
HWND hedit;
BOOL WINAPI Edit_Proc(HWND hedit, UINT uMsg, WPARAM wParam, LPARAM lParam)//視窗子類化
{
switch(uMsg)
{
case WM_CHAR: //響應編輯框內輸入的字元
{ BYTE inchar=LOBYTE(wParam);
if(inchar>='0'&& inchar<='9')
return CallWindowProc(OldProc,hedit,uMsg,0,lParam);//0~9傳回NULL值
break;
}
break;
}
return CallWindowProc(OldProc,hedit,uMsg,wParam,lParam);//負責正常傳回去主視窗處理
}
BOOL WINAPI Main_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
{
hedit=GetDlgItem(hwnd,IDC_EDIT);
OldProc=(WNDPROC)SetWindowLong(hedit,GWL_WNDPROC,(LONG)Edit_Proc);//最重要的一句,這句顯示瞭如何視窗子類 注意各個引數即可
return TRUE;
}
case WM_COMMAND:
{
switch(wParam)
{
case IDC_OK:
{ MessageBox(hwnd,TEXT("確定了"),TEXT(""),MB_OK);
break;
}
}
break;
}
case WM_CLOSE:
EndDialog(hwnd,0);
break;
}
return FALSE;
}
相關文章
- CNN視覺化技術總結(三)--類視覺化CNN視覺化
- 分析函式之視窗子句函式
- 技術類視訊教程網站網站
- Agora Flutter SDK -- 使用 Flutter 開發的高效能音視訊 SDK | 掘金技術徵文GoFlutter
- 說說技術書籍
- 分析函式視窗子句 RANGE/ROWS 差別函式
- framework外掛化技術-類載入Framework
- 前景貼紙類特效SDK,面向企業的技術解決方案特效
- 短視訊 SDK 6大功能技術實現方式詳解
- 聲網視訊通話,視訊直播小程式 SDK 初體驗 | 掘金技術徵文
- 海康威視Java SDK拉流(一)初始化SDKJava
- 美顏SDK架構技術分析架構
- RestEasy技術說明REST
- 隱藏在 SDK 中的單例類别範本單例
- 影片美顏sdk和計算機視覺技術有哪些關聯?計算機視覺
- 分析函式用法及視窗子句 range/rows差別函式
- 手遊錄屏直播技術詳解 | 直播 SDK 效能優化實踐優化
- 十億級視訊播放技術優化揭密優化
- 「視訊直播技術詳解」系列之七:直播雲 SDK 效能測試模型模型
- Java技術分享:Lambda表示式之介面例項化Java
- 如何最佳化並改進美顏sdk人臉識別技術?
- 【同行說技術】Python開發、除錯、爬蟲類工具 大全Python除錯爬蟲
- 淺談MFC中超類化技術的實現 (轉)
- 美顏sdk是什麼?美顏sdk有哪些技術組成?
- win10虛擬化技術怎麼開啟_win10系統cpu虛擬化技術如何開啟Win10
- Android 整合 Agora SDK 快速體驗 RTC 版多人視訊聊天|掘金技術徵文AndroidGo
- 微信公眾號java sdk技術選型Java
- 不重視技術,何談掌握核心技術?
- 技術文章遷移說明
- 影片美顏SDK動態處理技術與靜態處理技術
- 頁面視覺化搭建工具技術要點視覺化
- 人力資源資料視覺化技術架構視覺化架構
- 視覺化技術在 Nebula Graph 中的應用視覺化
- Java類初始化和例項化Java
- 受益技術類書籍
- 來說說 Java 中的例項初始化器Java
- 來說說Java中的例項初始化器Java
- java中父類宣告子類例項化Java