WIN32 控制元件基礎
首先我們看下如下介面:
上面有一個彈窗,有兩個控制元件,每個控制元件他們都是一個Window
例項。
我們首先看下點選事件的互動程式碼:
//這是控制元件所在彈窗的事件過程函式
INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam) {
//視窗關閉
if (WM_CLOSE==msgType)
{
EndDialog(hwnd, 0);
return TRUE;
}
//WM_COMMAND 有三種情況 快捷鍵 選單 控制元件資訊.具體請參考官網文件
else if (WM_COMMAND==msgType)
{
//這裡直接判斷為控制元件型別即可
//高字為 控制元件的事件比如BN_CLICKED為點選事件
WORD hWord = HIWORD(wparam);
//低字為為控制元件id
WORD lWord= LOWORD(wparam);
//如果控制元件id為IDC_BUTTON1且事件型別為點選事件
if (lWord== IDC_BUTTON1 && hWord==BN_CLICKED)
{
OutputDebugStringA("IDC_BUTTON1 \r\n");
}
//概念同上
else if (lWord== IDC_CHECK1 && hWord == BN_CLICKED)
{
//得到當前控制元件對應的視窗例項(每個控制元件都是視窗例項)
HWND child = GetDlgItem(hwnd, IDC_BUTTON1);
//模擬傳送一個點選事件給IDC_BUTTON1
SendMessageA(child, BM_CLICK, 0, 0);
OutputDebugStringA("IDC_CHECK1 \r\n");
}
return TRUE;
}
return FALSE;
}
上面的程式碼寓意:
id
為IDC_BUTTON1
的控制元件觸發點選事件後列印輸出語句"IDC_BUTTON1 \r\n"
id
為IDC_CHECK1
的控制元件觸發點選事件後 手動發出一個點選事件給IDC_BUTTON1
控制元件
我們看下另一個案例 按下按鈕獲取文字編輯框內容:
方式一:
INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam) {
if (WM_CLOSE==msgType)
{
EndDialog(hwnd, 0);
return TRUE;
}
else if (WM_COMMAND==msgType)
{
WORD hWord = HIWORD(wparam);
WORD lWord= LOWORD(wparam);
if (lWord== IDC_BTN_GET_MSG && hWord==BN_CLICKED)
{
TCHAR tchar[30];
HWND child = GetDlgItem(hwnd, IDC_EDIT1);
//這個函式本質傳送一個訊息給系統,系統會把字串賦值到tachr
SendDlgItemMessageA(hwnd, IDC_EDIT1, WM_GETTEXT, sizeof(tchar), (LPARAM)tchar);
OutputDebugStringA("IDC_BUTTON1 \r\n");
MessageBoxA(hwnd, tchar, "", MB_OK);
}
return TRUE;
}
return FALSE;
}
方式二:
INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam) {
if (WM_CLOSE==msgType)
{
EndDialog(hwnd, 0);
return TRUE;
}
else if (WM_COMMAND==msgType)
{
WORD hWord = HIWORD(wparam);
WORD lWord= LOWORD(wparam);
if (lWord== IDC_BTN_GET_MSG && hWord==BN_CLICKED)
{
TCHAR tachr[30];
HWND child = GetDlgItem(hwnd, IDC_EDIT1);
//這個函式本質傳送一個訊息給系統,系統會把字串賦值到tachr
GetWindowTextA(child, tachr, sizeof(tachr));
OutputDebugStringA("IDC_BUTTON1 \r\n");
MessageBoxA(hwnd, tachr, "", MB_OK);
}
return TRUE;
}
return FALSE;
}
相關文章
- Jack整理的Win32彙編基礎知識Win32
- QML::自繪基礎控制元件控制元件
- Flutter第3天--基礎控制元件(上)Flutter控制元件
- android基礎學習-android篇day12-UI基礎控制元件(上)AndroidUI控制元件
- android基礎學習-android篇day13-UI基礎控制元件(下)AndroidUI控制元件
- MFC---ActiveX控制元件程式設計基礎控制元件程式設計
- iOS學習筆記——基礎控制元件(上)iOS筆記控制元件
- Flutter 基礎控制元件篇-->進度指示器Flutter控制元件
- flutter初體驗之基礎控制元件知識Flutter控制元件
- PyQt5 基礎知識(六):展示控制元件QT控制元件
- Flutter 基礎控制元件篇-->圖片(Image)、圖示(Icon)Flutter控制元件
- Unity3D 基礎自學學習筆記(二) Unity3D 基礎控制元件Unity3D筆記控制元件
- Flutter 基礎控制元件篇-->輸入框(TextField)、表單(Form)Flutter控制元件ORM
- android基礎學習-android篇day14-UI基礎控制元件綜合案例——點餐系統AndroidUI控制元件
- Flutter第4天--基礎控制元件(下)+Flex佈局詳解Flutter控制元件Flex
- Flutter 基礎控制元件篇-->單選框(Switch)、核取方塊(Checkbox)Flutter控制元件
- 淺談Winform控制元件開發(一):使用GDI+美化基礎視窗ORM控制元件
- 【FPGA基礎】Latch基礎FPGA
- Pandas 基礎 (2) - Dataframe 基礎
- 前端基礎之jQuery基礎前端jQuery
- python基礎中的基礎Python
- Java基礎-語法基礎Java
- WIN32 手動編譯Win32編譯
- Win32常用API講解Win32API
- [今日白學]元件的基礎的基礎的基礎元件
- 基於Select模型的通訊模擬--win32程式設計程式碼模型Win32程式設計
- Java基礎-物件導向基礎Java物件
- Python基礎篇-Python基礎01Python
- scala基礎語法-----Spark基礎Spark
- Python基礎:語法基礎(3)Python
- 【web前端基礎 | JS基礎】物件Web前端JS物件
- 基礎
- Win32/Angryel病毒分析報告Win32
- 網狐客戶端-win32客戶端Win32
- Linux基礎學習——檔案基礎Linux
- JavaScript 基礎卷(一):基礎語法JavaScript
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- 測試基礎(四)Jmeter基礎使用JMeter