SendDlgItemMessage原来是这么用的

 
SendDlgItemMessage  函数功能:该函数把一个消息发送给指定的对话框中的控制。

  函数原型:LONG SendDlgItemMessage(
  HWND hDlg, // handle of dialog box
  int nIDDlgItem, // identifier of control
  UINT Msg, // message to send
  WPARAM wParam, // first message parameter
  LPARAM lParam // second message parameter
  );
  参数:
  hDlg:指定含有控制的对话框。
  nIDDigItem:指定接收消息的控制的标识符。
  Msg:指定将被发送的消息。
  wParam:指定消息特定的其他信息。
  lParam:指定消息特定的其他信息。
  返回值:返回值指定消息处理的结果,且依赖于发送的消息。
  备注:SendDlgItemMessage函数直到消息已经被处理时才返回。
  使用SendDlgItemMessage函数同从一个指定的控制中检索句柄和调用SendMessagge函数一样。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
飞鸽传书的代码 #include <stdio.h> #include "tlib.h" #include "resource.h" #include "ipmsg.h" #include "msgstr.h" TSetupDlg::TSetupDlg(Cfg *_cfg, THosts *_hosts, TWin *_parent) : TDlg(SETUP_DIALOG, _parent) { cfg = _cfg; hosts = _hosts; } TSetupDlg::~TSetupDlg() { } BOOL TSetupDlg::EvCreate(LPARAM lParam) { SetDlgIcon(hWnd); SetData(); if (rect.left == CW_USEDEFAULT) { GetWindowRect(&rect); int cx = ::GetSystemMetrics(SM_CXFULLSCREEN), cy = ::GetSystemMetrics(SM_CYFULLSCREEN); int xsize = rect.right - rect.left, ysize = rect.bottom - rect.top; int x = (cx - xsize)/2, y = (cy - ysize)/2; if (x + xsize > cx) x = cx - xsize; if (y + ysize > cy) y = cy - ysize; MoveWindow(x < 0 ? 0 : x, y < 0 ? 0 : y, xsize, ysize, FALSE); } else MoveWindow(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, FALSE); SetForegroundWindow(); return TRUE; } BOOL TSetupDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hWndCtl) { switch (wID) { case IDOK: case SET_BUTTON: GetData(); // SET_BUTTON 偼慡cfg-write ... for debug cfg->WriteRegistry(wID == IDOK ? (CFG_GENERAL|CFG_BROADCAST) : CFG_ALL); if (wID == IDOK) EndDialog(TRUE); return TRUE; case ADD_BUTTON: { char buf[MAX_PATH], buf2[MAX_PATH]; if (GetDlgItemText(BROADCAST_EDIT, buf, sizeof(buf)) <= 0) return TRUE; if (ResolveAddr(buf) == 0) return MessageBox(CANTRESOLVE_MSGSTR), TRUE; for (int cnt=0; SendDlgItemMessage(BROADCAST_LIST, LB_GETTEXT, cnt, (LPARAM)buf2) != LB_ERR; cnt++) if (_stricmp(buf, buf2) == 0) return TRUE; SendDlgItemMessage(BROADCAST_LIST, LB_ADDSTRING, 0, (LPARAM)buf); SetDlgItemText(BROADCAST_EDIT, ""); } return TRUE; case DEL_BUTTON: { char buf[MAX_PATH]; int index; while ((int)SendDlgItemMessage(BROADCAST_LIST, LB_GETSELCOUNT, 0, 0) > 0) { if (SendDlgItemMessage(BROADCAST_LIST, LB_GETSELITEMS, 1, (LPARAM)&index) != 1) break; SendDlgItemMessage(BROADCAST_LIST, LB_GETTEXT, (WPARAM)index, (LPARAM)buf); SetDlgItemText(BROADCAST_EDIT, buf); if (SendDlgItemMessage(BROADCAST_LIST, LB_DELETESTRING, (WPARAM)index, (LPARAM)buf) == LB_ERR) break; } } return TRUE; case LOG_BUTTON: TLogDlg(cfg, this).Exec(); return TRUE; case PASSWORD_BUTTON: TPasswdChangeDlg(cfg, this).Exec(); return TRUE; case URL_BUTTON: TUrlDlg(cfg, this).Exec(); return TRUE; case IDCANCEL: case IDNO: EndDialog(FALSE); return TRUE; } return FALSE; } void TSetupDlg::SetData(void) { SetDlgItemText(GROUP_COMBO, cfg->GroupNameStr); SetDlgItemText(NICKNAME_EDIT, cfg->NickNameStr); SendDlgItemMessage(OPEN_CHECK, BM_SETCHECK, cfg->OpenCheck, 0); SendDlgItemMessage(NOPOPUP_CHECK, BM_SETCHECK, cfg->NoPopupCheck, 0); SendDlgItemMessage(NOBEEP_CHECK, BM_SETCHECK, cfg->NoBeep, 0); SendDlgItemMessage(QUOTE_CHECK, BM_SETCHECK, cfg->QuoteCheck, 0); SendDlgItemMessage(SECRET_CHECK, BM_SETCHECK, cfg->SecretCheck, 0); for (TBroadcastObj *obj=cfg->broadcastList.Top(); obj; obj=cfg->broadcastList.Next(obj)) SendDlgItemMessage(BROADCAST_LIST, LB_ADDSTRING, 0, (LPARAM)obj->Host()); for (int cnt=0; cnt < hosts->HostCnt(); cnt++) { Host *host = hosts->GetHost(cnt); if (*host->groupName && SendDlgItemMessage(GROUP_COMBO, CB_FINDSTRING, (WPARAM)-1, (LPARAM)host->groupName) == CB_ERR) SendDlgItemMessage(GROUP_COMBO, CB_ADDSTRING, (WPARAM)0, (LPARAM)host->groupName); } SendDlgItemMessage(DIALUP_CHECK, BM_SETCHECK, cfg->DialUpCheck, 0); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值