开发一个ocx控件,属性页中加了一个IP ADDRESS控件,如何把它与某个属性名联系起来呢?
edit,checkbox等有值属性的控件都没问题,但是IP ADDRESS没有对应的值属性,只有控件属性,可以创建一个CIpAddressCtrl对象,但没有了属性名选项. 可以如下面这样:
DDP_Check(pDX, IDC_CK_MULTISEL, m_bMultiSel, _T("MultiSelect") );
DDX_Check(pDX, IDC_CK_MULTISEL, m_bMultiSel);
edit,checkbox等有值属性的控件都没问题,但是IP ADDRESS没有对应的值属性,只有控件属性,可以创建一个CIpAddressCtrl对象,但没有了属性名选项. 可以如下面这样:
DDP_Check(pDX, IDC_CK_MULTISEL, m_bMultiSel, _T("MultiSelect") );
DDX_Check(pDX, IDC_CK_MULTISEL, m_bMultiSel);
解决方案 »
- 某类访问另一个类实例类对象?
- 如何将在对话框中播放的FLASH背景色设置为透明
- vc 中 如何让计算机蜂鸣器发出声音,怎么设置系统时间?
- 用过xtreme或是cjlib的进
- 如何用打包工具做安装程序?
- 怎样把一个整型数据用AfxMessageBox()显示给用户?整型数据可不可能为NULL型?如是NULL型,怎样判断?
- 请问WINDOWS中象开始菜单一样,MENU左边有一个竖条还有文字的外观,那是怎样做的?请教具体的API,思路。谢谢!
- atl控件方法当属性来用,怎么解决?
- VS2008中使用MFC单文档创建了一个对话框,但是按钮在运行时均显示无效,这是什么问题?
- 俺怎么连一个非模态对话框都搞不定,求教
- 问个简单的问题,sockadd_in结构的
- 如何实现让IE只允许上指定的URL,如上了非指定的URL,则关闭或强行让它上指定的URL。谢谢!!!!
DDX_Control(pDX, IDC_IPADDRESS_DNSIP, m_edtDnsIP);
初始值要自己加的(在初始化中):
BYTE nFiled1 = 0;
BYTE nFiled2 = 0;
BYTE nFiled3 = 0;
BYTE nFiled4 = 0; m_edtDnsIP.SetAddress(nFiled1,nFiled2,nFiled3,nFiled4);
void AFXAPI DDX_IP(CDataExchange* pDX, int nIDC, DWORD& value)
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
if (pDX->m_bSaveAndValidate)
{
::SendMessage(hWndCtrl, IPM_GETADDRESS, 0, (LPARAM)&value);
}
else
{
::SendMessage(hWndCtrl, IPM_SETADDRESS, 0, (LPARAM)value);
}
}
void AFXAPI DDX_IP(CDataExchange* pDX, int nIDC, CString& value)
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
if (pDX->m_bSaveAndValidate)
{
DWORD dw = 0;
::SendMessage(hWndCtrl, IPM_GETADDRESS, 0, (LPARAM)&dw);
value.Format(_T("%d.%d.%d.%d"),
FIRST_IPADDRESS(dw),
SECOND_IPADDRESS(dw),
THIRD_IPADDRESS(dw),
FOURTH_IPADDRESS(dw));
}
else
{
BYTE b1,b2,b3,b4;
b1 = b2 = b3 = b4 = 0;
LPCTSTR p = value;
b1 =_ttoi(p);
while(*p != 0 && *p != '.') ++p;
if(*p != 0) ++p;
b2 = _ttoi(p);
while(*p != 0 && *p != '.') ++p;
if(*p != 0) ++p;
b3 = _ttoi(p);
while(*p != 0 && *p != '.') ++p;
if(*p != 0) ++p;
b4 = _ttoi(p);
::SendMessage(hWndCtrl, IPM_SETADDRESS, 0, MAKEIPADDRESS(b1,b2,b3,b4));
}
}DDP 函数 用 DDP_Text就可以了. 适合 串和 DWORD
响应此控件的 通知:IPN_FIELDCHANGEDvoid CXXXXXPropPage::OnFieldchangedIp(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
SetControlStatus(IDC_IP, TRUE);
SetModifiedFlag(TRUE);
*pResult = 0;
}