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
- Win32彙編的環境和基礎(轉)Win32
- Win32彙編的環境和基礎 (轉)Win32
- .NET基礎之DataList控制元件控制元件
- QML::自繪基礎控制元件控制元件
- 例說WIN32 Tab控制元件使用Win32控制元件
- win32 sdk下呼叫webbrowser控制元件Win32Web控制元件
- .NET基礎之GridView控制元件View控制元件
- Flutter第3天--基礎控制元件(上)Flutter控制元件
- WIN32使用者介面設計基礎之Cursor篇 (轉)Win32
- iOS學習筆記——基礎控制元件(上)iOS筆記控制元件
- 【.net基礎】--DropDownList控制元件:兩級聯動控制元件
- .NET基礎之三個導航控制元件控制元件
- Win32 SDK建立RichEdit Control控制元件Win32控制元件
- Flutter 基礎控制元件篇-->進度指示器Flutter控制元件
- flutter初體驗之基礎控制元件知識Flutter控制元件
- MFC---ActiveX控制元件程式設計基礎控制元件程式設計
- PyQt5 基礎知識(六):展示控制元件QT控制元件
- Android自定義控制元件系列之基礎篇Android控制元件
- android基礎學習-android篇day12-UI基礎控制元件(上)AndroidUI控制元件
- android基礎學習-android篇day13-UI基礎控制元件(下)AndroidUI控制元件
- Unity3D 基礎自學學習筆記(二) Unity3D 基礎控制元件Unity3D筆記控制元件
- Apple Watch學習之路 基礎控制元件學習APP控制元件
- Win32彙編教程七 控制元件的子類化 (轉)Win32控制元件
- Flutter 基礎控制元件篇-->圖片(Image)、圖示(Icon)Flutter控制元件
- Flutter 基礎控制元件篇-->輸入框(TextField)、表單(Form)Flutter控制元件ORM
- Win10系列:C#應用控制元件基礎8Win10C#控制元件
- 【王孟軍! 】Web基礎控制元件開發系列--屬性Web控制元件
- Flutter第4天--基礎控制元件(下)+Flex佈局詳解Flutter控制元件Flex
- C++反彙編基礎:Win32平臺(逆向例項、動態除錯例項)C++Win32除錯
- android基礎學習-android篇day14-UI基礎控制元件綜合案例——點餐系統AndroidUI控制元件
- 【FPGA基礎】Latch基礎FPGA
- Flutter 基礎控制元件篇-->單選框(Switch)、核取方塊(Checkbox)Flutter控制元件
- 淺談Winform控制元件開發(一):使用GDI+美化基礎視窗ORM控制元件
- 14天學會安卓開發(第四天)基礎UI控制元件安卓UI控制元件
- 專業好文!深聊軟體設計中最基礎的控制元件元素控制元件
- Java基礎-語法基礎Java