如何用CComQIPtr来更改WebBrowse中的Radio的check与否?==> Radio对应接口是IHTMLOptionButtonElment, 你可以在MSDN中找到它的方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to jintooth我试不出来,MSDN上写的不清楚,加入如下两个Radio:<input name="status" type="radio" value="Value1>Value1<input name="status" type="radio" value="Value2>Value2都未被选中,现在我想选中Value2,怎么写?用put_value吗?我试过了,不知怎么写:( 下面是一段把网页中所有的 RadioCheck都选中的代码,你看看有没有帮助IHTMLDocument2 * pDoc = NULL;IHTMLElementCollection * pAllElem = NULL;IHTMLElement *pElem = NULL;IHTMLOptionButtonElement * pOpnElem = NULL;VARIANT name;long p;BSTR bstrSrc;CString env="selected";name.vt = VT_I4;pDoc = (IHTMLDocument2*)(m_ctrlWeb.GetHtmlDocument());if(pDoc!=NULL){ pDoc->get_all(&pAllElem); if(pAllElem!=NULL) { pAllElem->get_length(&p); if(p>0) { //get all Option Button for(int i=0; i<p; i++) { name.lVal = i; if(pAllElem->item(name, name, (LPDISPATCH*)&pElem)==S_OK) { if(pElem != NULL) { pElem->QueryInterface(&pOpnElem); if(pOpnElem!=NULL) { bstrSrc = env.AllocSysString(); pOpnElem->put_value(bstrSrc); SysFreeString(bstrSrc); pOpnElem->Release(); pOpnElem = NULL; } pElem->Release(); pElem = NULL; } } } } pAllElem->Release(); } pDoc->Release();} 你那个HTML写错了,两个radio不能有相同的name都叫status应该改成<input name="status1" type="radio" value="Value1>Value1<input name="status2" type="radio" value="Value2>Value2你可以pOpnElem->get_name(&bstrSrc);CString s(bstrSrc);SysFreeString(bstrSrc);if(s.CompareNoCase("status2") == 0)//是第二个radio{//给该radio赋值 selectedbstrSrc = env.AllocSysString();pOpnElem->put_value(bstrSrc);SysFreeString(bstrSrc);} to 111222:同组的Radio必须有相同的名字呀.否则网页提交的时候如何判断?不信你找一个带Radio的网页看看。 哎呀,我来晚了。同组的radio不能同名的。提交依靠form的名字啊。<form name="form1" action ="Post.pl" method="post"><input name="status1" type="radio" value="Value1">Value1</input><input name="status2" type="radio" value="Value2">Value2</input></form>上面是正确的形势。 如果上面提交方法是GET 实际上就是 post.pl?status1=Value1如果你的两个radio都叫status1,取什么值呢?是value1还是2?就算某些时候提交正常了。也是先去上面的值,有时候还会出错的。 VC 对 dll文件和lib的理解 讨论 请教 MFC最大可申请内存 谁能正常运行这个微软的ADO例程???(Save 和 Open 方法范例 ) 新手的问题请帮帮忙!!! 怎么复制文件 想用XML和COM+做个B/S结构的应用程序,有些问题,急! 好的建议,我愿意付钱。 一个程序里面可不可以同时有流式和报式socket和外界同时进行通信? vc中为什么要许多文件?为什么不像c语言一样之用一个文件? Scroll View 的问题 我也问个ListCtrl的小问题! 21bird 请Kevin_qing(Kevin)来看一下! 检测拨号网络连接要用到哪个API函数?
我试不出来,MSDN上写的不清楚,加入如下两个Radio:
<input name="status" type="radio" value="Value1>Value1
<input name="status" type="radio" value="Value2>Value2
都未被选中,现在我想选中Value2,怎么写?用put_value吗?我试过了,不知怎么写:(
IHTMLDocument2 * pDoc = NULL;
IHTMLElementCollection * pAllElem = NULL;
IHTMLElement *pElem = NULL;
IHTMLOptionButtonElement * pOpnElem = NULL;
VARIANT name;
long p;
BSTR bstrSrc;
CString env="selected";name.vt = VT_I4;
pDoc = (IHTMLDocument2*)(m_ctrlWeb.GetHtmlDocument());
if(pDoc!=NULL)
{
pDoc->get_all(&pAllElem);
if(pAllElem!=NULL)
{
pAllElem->get_length(&p);
if(p>0)
{
//get all Option Button
for(int i=0; i<p; i++)
{
name.lVal = i;
if(pAllElem->item(name, name, (LPDISPATCH*)&pElem)==S_OK)
{
if(pElem != NULL)
{
pElem->QueryInterface(&pOpnElem);
if(pOpnElem!=NULL)
{
bstrSrc = env.AllocSysString();
pOpnElem->put_value(bstrSrc);
SysFreeString(bstrSrc);
pOpnElem->Release();
pOpnElem = NULL;
} pElem->Release();
pElem = NULL;
}
}
}
}
pAllElem->Release();
}
pDoc->Release();
}
应该改成<input name="status1" type="radio" value="Value1>Value1
<input name="status2" type="radio" value="Value2>Value2你可以pOpnElem->get_name(&bstrSrc);
CString s(bstrSrc);
SysFreeString(bstrSrc);
if(s.CompareNoCase("status2") == 0)//是第二个radio
{//给该radio赋值 selected
bstrSrc = env.AllocSysString();
pOpnElem->put_value(bstrSrc);
SysFreeString(bstrSrc);}
同组的Radio必须有相同的名字呀.否则网页提交的时候如何判断?不信你找一个带Radio的网页看看。
<input name="status1" type="radio" value="Value1">Value1</input>
<input name="status2" type="radio" value="Value2">Value2</input>
</form>
上面是正确的形势。
也是先去上面的值,有时候还会出错的。