CDHtmlDialog把htm中的input设置为disabled

sunjor 2011-09-29 12:44:45
<input id=btn_ok type="button" value="登陆"/>


在满足一定条件时按钮灰化,我查了下msdn,发现了SetElementPropetry函数,于是:

VARIANT var;
ZeroMemory(&var,sizeof(VARIANT));
var.vt=11; //设置var的值是根据GetElementPropetry的返回值推测出来的
var.boolVal=TRUE;
SetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED,&var);

但是ID为btn_ok的按钮没有变灰!请高手指教!
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjor 2011-09-29
  • 打赏
  • 举报
回复
我做了一个实验,调用
VARIANT GetElementProperty(
LPCTSTR szElementId,
DISPID dispid
);
返回值查看VARIANT的值的情况
VARIANT var=GetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED);
1.<input id=btn_ok type="button" value="登陆"/>
得到 var.vt=11,var.BOOL=0;
2..<input id=btn_ok type="button" disabled="disabled" value="登陆"/>
得到var.vt=11,var BOOL=-1;
WaistCoat08 2011-09-29
  • 打赏
  • 举报
回复
VARIANT var;
ZeroMemory(&var,sizeof(VARIANT));
var.vt= VT_BOOL;

var.boolVal= VARIANT_TRUE;
SetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED,&var);

不好意思,刚才回复有问题,这样试试行不?
sunjor 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 oyljerry 的回复:]
把下面这段js写到一个文件,test.js, 实现异步可插入协议(http://www.codeguru.com/cpp/com-tech/atl/misc/article.php/c37),把test.js插入CDHtmlDialog

JScript code
document.getElementById("btn_ok").disabled=true;
[/Quote]

恩 我试试
supercllc 2011-09-29
  • 打赏
  • 举报
回复
IHTMLElement* pElem = NULL;
GetElement(_T("btn_ok"), &pElem);
if (pElem)
{
CComVariant oAttr;
oAttr = TRUE;
pElem->setAttribute(L"disabled", oAttr);
}
supercllc 2011-09-29
  • 打赏
  • 举报
回复
HRESULT GetElement(LPCTSTR szElementId, IHTMLElement **pphtmlElement);

IHTMLElement : public IDispatch
{
public:
virtual /* [id] */ HRESULT STDMETHODCALLTYPE setAttribute(
/* [in] */ BSTR strAttributeName,
/* [in] */ VARIANT AttributeValue,
/* [in][defaultvalue] */ LONG lFlags = 1) = 0;

这两个函数结合使用呢?
oyljerry 2011-09-29
  • 打赏
  • 举报
回复
把下面这段js写到一个文件,test.js, 实现异步可插入协议(http://www.codeguru.com/cpp/com-tech/atl/misc/article.php/c37),把test.js插入CDHtmlDialog

document.getElementById("btn_ok").disabled=true;
sunjor 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 waistcoat08 的回复:]

C/C++ code
VARIANT var;
ZeroMemory(&var,sizeof(VARIANT));
var.vt= VT_BOOL;

var.boolVal= VARIANT_FALSE;
SetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED,&var);
[/Quote]
是我引用的地方错了,不好意思,谢谢,谢谢!
sunjor 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 waistcoat08 的回复:]

C/C++ code
VARIANT var;
ZeroMemory(&var,sizeof(VARIANT));
var.vt= VT_BOOL;

var.boolVal= VARIANT_FALSE;
SetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED,&var);
[/Quote]

谢谢你的回复,试了一下按钮还是没有灰化
sunjor 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]

CDhtmlDialog差距JS,然后调用JS function来置灰按钮
[/Quote]

能详细说明一下么,我没做过js,完全摸不着头脑
WaistCoat08 2011-09-29
  • 打赏
  • 举报
回复
VARIANT var;
ZeroMemory(&var,sizeof(VARIANT));
var.vt= VT_BOOL;

var.boolVal= VARIANT_FALSE;
SetElementPropetry(_T("btn_ok"),DISPID_IHTMLINPUTELEMENT_DISABLED,&var);
oyljerry 2011-09-29
  • 打赏
  • 举报
回复
CDhtmlDialog差距JS,然后调用JS function来置灰按钮
sunjor 2011-09-29
  • 打赏
  • 举报
回复
或者有什么其他的方法把html的按钮置灰呢?求求各位大侠啦!!!
sunjor 2011-09-29
  • 打赏
  • 举报
回复
先顶一下
最近两天在弄一个界面显示的事情,虽然要求不高,不过还是想做得好看一些,就想在htmldialog上来显示web脚本,这样也方便格式化显示。 但是这htmldialog只能显示url,而无法显示一段html脚本,于是通过研究和思路改变,也为了以后方便使用,特意写了个简单的dll库来实现这个功能,它可以加载url,也可以加载一段html代码。 加载url时,由于没有处理安全类的东西,所以可能会出现许多提示,所以此库不建议使用这一功能。 加载html代码时,应该是需要一个完整的代码,包括<html>等标签 工程说明: 都采用vs2015编译 showhtml 工程:主功能实现库,可以在其它程序使用它,包含showhtml/showhtml.api.h文件,然后链接showhtml.lib。其提供两个接口: CreateHtmlShow(),用于生成一个用来显示的窗口,它必需有一个父窗口,其返回值在后面显示时需要。如果返回值小于等于0,则表示失败 NavigateHtml(),用于加载一个url或者显示一段html代码,其第一个参数为CreateHtmlShow()的返回值。 CreateHtmlShow()接口返回值存在的意义,在一个程序,可能会同时多个地方显示html内容,所以需要对每个显示添加标示 至于窗口关闭时,则库自动删除对应的web显示窗口。 shdemo 工程:html显示的测试工程 如有问题,请联系: hyd2001_2008@163.com 2018.7.10

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧