SendDlgItemMessageA()相关整理

本文详细介绍了Windows API中的SendDlgItemMessageA函数,探讨如何使用该函数来处理对话框中的控件消息,特别是在按钮操作中的应用。通过实例解析,阐述了如何发送特定消息到对话框中的按钮控件,以及如何响应和处理这些消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SendDlgItemMessage 函数
The SendDlgItemMessage function sends a message to the specified control in a dialog box.
定义
LRESULT SendDlgItemMessage(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam);

详细注释函数 INT_PTR CALLBACK HiderDialog(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG: { UpdateOptions(hDlg); for (size_t i = 0; i < g_Settings->GetProfileNames().size(); i++) { SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_ADDSTRING, 0, (LPARAM)g_Settings->GetProfileNames()[i].c_str()); if(g_Settings->GetCurrentProfileName() == g_Settings->GetProfileNames()[i]) SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_SETCURSEL, i, 0); } CreateTooltips(hDlg); return TRUE; } case WM_CLOSE: { EndDialog(hDlg, 0); return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_BTN_OK: { if (SaveOptions(hDlg) == FALSE) { _plugin_logprintf("Error: Saving options failed\n"); break; } MessageBoxW(hDlg, L"Settings applied!", L"[HyperHide Options]", MB_ICONINFORMATION); UpdateOptions(hDlg); Hide(); break; } case IDC_BTN_CREATENEWPROFILE: { std::string NewProfileName; NewProfileName.resize(GUI_MAX_LINE_SIZE); if (!GuiGetLineWindow("Pass new profile name", &NewProfileName[0])) break; if (g_Settings->AddProfile(NewProfileName) == FALSE) break; g_Settings->SaveProfile(); g_Settings->SetProfile(NewProfileName); SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_ADDSTRING, 0, (LPARAM)NewProfileName.c_str()); int ProfileCount = SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_GETCOUNT, 0, 0); SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_SETCURSEL, ProfileCount - 1, 0); UpdateOptions(hDlg); break; } case IDC_COB_CURRENTPROFILE: { if (HIWORD(wParam) != CBN_SELCHANGE) break; int ProfileIdx = (int)SendDlgItemMessageA(hDlg, IDC_COB_CURRENTPROFILE, CB_GETCURSEL, 0, 0); g_Settings->SetProfile(g_Settings->GetProfileNames()[ProfileIdx]); UpdateOptions(hDlg); break; } case IDC_CHK_SELECT_ALL: { if (IsDlgButtonChecked(hDlg, IDC_CHK_SELECT_ALL) == TRUE) { for (size_t i = 0; i < CheckBoxNumber; i++) { BOOL status = CheckDlgButton(hDlg, i + IDC_CHK_NTQUERYINFORMATIONPROCESS, BST_CHECKED); } } else { for (size_t i = 0; i < CheckBoxNumber; i++) { CheckDlgButton(hDlg, i + IDC_CHK_NTQUERYINFORMATIONPROCESS, BST_UNCHECKED); } } break; } } } return TRUE; } return FALSE; }
最新发布
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值