解决COM显示HTML,无法copy、paste的问题
这两个操作默认是被屏蔽了的,需要手动拦截按键消息然后处理。
如果嵌入HTML的窗口拿不到WM_KEYDOWN这样的消息,就只好直接在消息循环里拦截了:
{
while (0 != (r = GetMessage(&msg, NULL, 0, 0))) {
if (r == -1) {
break;
}
if (CheckIfDealCopyPaste(msg)) {
continue;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
然后检查按键:
bool CheckIfDealCopyPaste(const MSG &msg)
{
if (msg.message != WM_KEYDOWN) {
return false;
}
BOOL bCtrlDown = (0x80 & GetKeyState(VK_CONTROL));
if (msg.wParam == _T('X') && bCtrlDown) {
DoCommand(L"Cut");
return true;
} else if (msg.wParam == _T('C') && bCtrlDown) {
DoCommand(L"Copy");
return true;
} else if (msg.wParam == _T('V') && bCtrlDown) {
DoCommand(L"Paste");
return true;
} else if (msg.wParam == _T('A') && bCtrlDown) {
DoCommand(L"SelectAll");
return true;
}
return false;
}
void DoCommand(LPCWSTR szCommand)
{
BSTR bStr = SysAllocString(szCommand);
DoWebCommand(m_hWnd, bStr); // m_hWnd为嵌入HTML的窗口句柄
SysFreeString(bStr);
}
// 这是一个C函数
void WINAPI DoWebCommand(HWND hWnd, BSTR idCmd)
{
IOleObject **browserHandle;
IOleObject *browserObject;
TRACE_FUNC;
if ((browserHandle = (IOleObject **)GetWindowLongPtr(hWnd, GWLP_USERDATA)))
{
browserObject = *browserHandle;
do
{
IWebBrowser2 *webBrowser2 = NULL;
IConnectionPointContainer *spCPC = NULL;
IConnectionPoint *spCP = NULL;
IDispatch *pDoc = NULL;
IHTMLDocument2 *htmlDoc = NULL;
VARIANT_BOOL bVal;
HRESULT hr;
hr = browserObject->lpVtbl->QueryInterface(browserObject, &IID_IWebBrowser2, (void**)&webBrowser2);
相关文档:
<mce:style type="text/css"><!--
#summary{word-wrap:break-word;width:500px;margin: 0px;padding: 0px;};
.formIn th{white-space: nowrap;}
.formIn{ margin-left: 90px;}
--></mce:style><style type="text/css" mce_bogus="1"> #summary{word-wrap:break-word;width:50 ......
label 的title属性相当于tooltip,鼠标放上去会显示title属性的值
title,label,entitle,name的区别
title 题目,标题
label (商品/产品)标签
entitle 动词,给...称号,给...权利
name 姓名,名称
alt属性和title属性
原文:http://www.456bereastreet.com/archive/200412/the_alt_and_title_attributes/
翻译 ......
标记或参数
定 义
<A>
连结标记
<ADDRESS>
地址标记(斜体效果)
<AREA>
连结区域标记(设定各连结区域)
alink
点击连结时的样式。例:alink="#FF0000"
align
水平方向摆放位置。例:align="center"
alternate
来回走动,例:behavior=alternate
alt
在连结中插入文字说明。例:alt=" ......
http://www.experts-exchange.com/Programming/Languages/C/Q_24038236.html
/* CWebPage.c
This is a Win32 C application (ie, no MFC, WTL, nor even any C++ -- just plain C) that demonstrates
how to embed a browser "control" (actually, an OLE object) in your own window (in order to display a
web p ......