描述:
我用mfc写了一个ActiveX控件用于调用不同的打印机打印网页,其在网页源码中的形式为:
<OBJECT ID="A11" WIDTH=75 HEIGHT=25
CLASSID="CLSID:D01278E8-E9A8-11DA-8FBA-444553540000">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="1984">
<PARAM NAME="_ExtentY" VALUE="661">
<PARAM NAME="_StockProps" VALUE="70">
<PARAM NAME="Caption" VALUE="print1">
<PARAM NAME="PrintNo" VALUE="1">
</OBJECT>
参数PrintNo用于指定不同的打印机,它对应于控件类中的m_printno变量,但是这个控件在简单的网页上能获得设定的值,在复杂的网页上就始终为1,我的DoPropExchange如下:
void CA1Ctrl::DoPropExchange(CPropExchange* pPX)
{
TCHAR szbuffer[50];
wsprintf(szbuffer,"in beginDoPropExchange m_printno is %i",m_printno);
AfxMessageBox(szbuffer);
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
wsprintf(szbuffer,"in mediaDoPropExchange m_printno is %i",m_printno);
AfxMessageBox(szbuffer);
// TODO: Call PX_ functions for each persistent custom property.
PX_Short(pPX,_T("printno"),m_printno,1);
wsprintf(szbuffer,"in endDoPropExchange m_printno is %i",m_printno);
AfxMessageBox(szbuffer);
}
我用对话框发现问题出在PX_Short函数上,在简单的网页上,m_printno能随网页上指定的属性值改变,而在复杂的网页上,m_printno始终为1,这是怎么回事,请有经验的大侠指教.
解决方案1:
使用其中方法的参数
解决方案2:oo
解决方案3:mark