SmsManager/MmsHtmlCtrl.cpp

138 lines
3.1 KiB
C++
Raw Normal View History

2025-01-14 10:46:18 +08:00
////////////////////////////////////////////////////////////////
// If this code works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
// Compiles with Visual C++ 6.0, runs on Windows 98 and probably NT too.
//
#include "StdAfx.h"
#include "MmsHtmlCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void CMmsHtmlCtrl::OnAppCmd(LPCTSTR lpszWhere)
{
if (_tcsicmp(lpszWhere,_T("ok"))==0) {
GetParent()->SendMessage(WM_COMMAND,IDOK);
}
}
void CMmsHtmlCtrl::OnDocumentComplete(LPCTSTR lpszURL)
{
CHtmlView::OnDocumentComplete(lpszURL);
Show_Scroll();
}
void CMmsHtmlCtrl::OnNavigateComplete2(LPCTSTR strURL)
{
CHtmlView::OnNavigateComplete2(strURL);
}
BOOL CMmsHtmlCtrl::Show_Scroll()
{
HRESULT hr;
IHTMLDocument2* pDoc = (IHTMLDocument2*)GetHtmlDocument();
if ( !pDoc )
{
return false;
}
/*
IHTMLDocument3 *piDoc3 = NULL;
IHTMLElement *piDocElement = NULL;
IHTMLElement2 *piDocElement2 = NULL;
pDoc->QueryInterface(__uuidof(IHTMLDocument3), (void**) &piDoc3);
piDoc3->get_documentElement(&piDocElement);
piDocElement->QueryInterface(__uuidof(IHTMLElement2), (void**) &piDocElement2);
long l=0;
piDocElement2->get_clientHeight(&l);
*/
IHTMLElement *phtmlElement = NULL;
pDoc->get_body(&phtmlElement);
pDoc->Release();
if ( !phtmlElement )
{
return false;
}
IHTMLElement2 *phtmlElement2 = NULL;
hr = phtmlElement->QueryInterface(IID_IHTMLElement2, (void**)&phtmlElement2);
if(FAILED(hr))
{
phtmlElement->Release();
return false;
}
if ( !phtmlElement2)
{
phtmlElement->Release();
return false;
}
long lHeight=0;
long lHeight4=0;
phtmlElement2->get_clientHeight(&lHeight);
phtmlElement2->get_scrollHeight(&lHeight4);
phtmlElement2->Release();
/*
long lHeight2=0;
CRect rect;
m_Html.GetWindowRect(&rect);
lHeight2=rect.Height();
*/
IHTMLBodyElement *phtmlbody = NULL;
phtmlElement->QueryInterface(IID_IHTMLBodyElement, (void**)&phtmlbody);
if(phtmlbody != NULL)
{
if (lHeight<lHeight4)
phtmlbody->put_scroll(BSTR(_T("yes")));
else
phtmlbody->put_scroll(BSTR(_T("no")));
phtmlbody->Release();
phtmlElement->Release();
}
phtmlElement->Release();
return true;
}
BOOL CMmsHtmlCtrl::PreTranslateMessage(MSG* pMsg)
{
if ((pMsg->message == WM_RBUTTONDOWN)||(pMsg->message == WM_RBUTTONDBLCLK))
{
CPoint point(pMsg->pt);
ScreenToClient(&point);
/*
IHTMLDocument2* pdoc2=NULL;
IHTMLElement* pElement=NULL;
IDispatch* pDisp=NULL;
pDisp=GetHtmlDocument();
pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pdoc2);
pDisp->Release();
pdoc2->elementFromPoint(point.x,point.y,&pElement);
pdoc2->Release();
if(pElement){
BSTR ID;
pElement->get_id(&ID);
pElement->Release();
CString str=(LPCTSTR)(_bstr_t)ID;
if(str==_T("Layer1")){
CMenu menu;
menu.LoadMenu(IDR_MENU1 );
CMenu* pmenu=menu.GetSubMenu(0);
pmenu->TrackPopupMenu(0,pMsg->pt.x,pMsg->pt.y,this);
}
}
*/
return TRUE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ε<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʾ<EFBFBD>κβ˵<CEB2><>ӷ<EFBFBD><D3B7><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>html<6D><6C><EFBFBD>ض<EFBFBD>ID<49><44>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>IJ˵<C4B2>
}
else
{
return CHtmlView::PreTranslateMessage(pMsg);
}
}