Здравствуйте!
Передо мной стоит такая задача:
1. Внедрить ActiveX элемент в HTML документ
2. С помощью скрипта в HTML документе создать кнопку, при нажатии на которую будет менять цвет ActiveX элемент.
Проблема вот в чем. Когда в строке
<param id="m_BackColor" name="m_BackColor" value="#008000"> прописываю
value, то элемент меняет цвет на черный (на зависимо от выбранного мною цвета. Как решить эту проблему?
HTML5 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| <!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset="utf-8" />
<p><object
classid="clsid:68CB1A4D-CE46-4E5E-B270-8D0DCAE4FDF5"
width=300
height=300
align=center
hspace=3
vspace=3>
<param id="MyActiveX" name="MyActiveX">
<param id="m_BackColor" name="m_BackColor">
</object></p>
<button id="black">red</button>
<button id="green">green</button>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.2.1.min.js"
integrity="sha256-gvQgAFzTH6trSrAWoH1iPo9Xc96QxSZ3feW6kem+O00="
crossorigin="anonymous"></script>
<script>
$('#red').click(function () {
$('#m_BackColor').attr('value', '#ff0000');
});
$('#green').click(function () {
$('#m_BackColor').attr('value', '#008000');
});
</script>
</html> |
|
Ps.Был создан ActiveX элемент в VS2010 и изменен код в файле
MYActiveXCtrl.cpp
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| ...
...
...
// CMYActiveXCtrl::OnDraw - Drawing function
void CMYActiveXCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
/* if (!pdc)
return;*/
// TODO: Replace the following code with your own drawing code.
// pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
DoSuperclassPaint(pdc, rcBounds);
pdc->FillRect(rcInvalid, &CBrush(m_BackColor));
// pdc->Ellipse(rcBounds);
}
// CMYActiveXCtrl::DoPropExchange - Persistence support
void CMYActiveXCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
// TODO: Call PX_ functions for each persistent custom property.
}
// CMYActiveXCtrl::OnResetState - Reset control to default state
void CMYActiveXCtrl::OnResetState()
{
COleControl::OnResetState(); // Resets defaults found in DoPropExchange
m_BackColor=RGB(230,230,250);
// TODO: Reset any other control state here.
}
// CMYActiveXCtrl::AboutBox - Display an "About" box to the user
void CMYActiveXCtrl::AboutBox()
{
CDialogEx dlgAbout(IDD_ABOUTBOX_MYACTIVEX);
dlgAbout.DoModal();
}
// CMYActiveXCtrl message handlers
OLE_COLOR CMYActiveXCtrl::GetBackColor(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your dispatch handler code here
return m_BackColor;
}
void CMYActiveXCtrl::SetBackColor(OLE_COLOR newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your property handler code here
m_BackColor=newVal;
SetModifiedFlag();
Invalidate();
} |
|