1. 程式人生 > >webbrowser拖動無邊框頁面移動

webbrowser拖動無邊框頁面移動

原理:擷取webbrowser視窗的滑鼠訊息,然後在宿主視窗指定區域返回HTCAPTION

HWND hw = FindWindowEx(m_hWnd,NULL,_T("ActiveXWnd"),NULL);


HWND hSon = FindWindowEx(hw,NULL,_T("Shell Embedding"),NULL);


HWND hGS = FindWindowEx(hSon,NULL,_T("Shell DocObject View"),NULL);


HWND hGGS = FindWindowEx(hGS,NULL,_T("Internet Explorer_Server"),NULL);


m_proc.m_hwnd = m_hWnd;
m_proc.m_oldProc = (WNDPROC)SetWindowLong(hGGS,GWL_WNDPROC,(LONG)CMsgMouseProc::MouseProc);

攔截:

LRESULT CALLBACK CMsgMouseProc::MouseProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (Msg == WM_MOUSEACTIVATE)
{


RECT rc;
POINT point;
GetWindowRect(m_hwnd,&rc);
rc.bottom=rc.top+36;
GetCursorPos(&point);
if (PtInRect(&rc,point)==TRUE)
{
::PostMessage(m_hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0);
}




return MA_ACTIVATE;
}


return m_oldProc(hWnd,Msg,wParam,lParam);


}

相關推薦

webbrowser邊框頁面移動

原理:擷取webbrowser視窗的滑鼠訊息,然後在宿主視窗指定區域返回HTCAPTION HWND hw = FindWindowEx(m_hWnd,NULL,_T("ActiveXWnd"),NULL);HWND hSon = FindWindowEx(hw,NULL,

Delphi中邊框視窗的5種方法

1.MouseMove事件中加入:// ReleaseCapture;// Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入:// POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);//

D3.js 使用縮放zoom時節點無法,只能整體移動的問題

func blank on() sta blog function targe light event .on("dragstart", function() { d3.event.sourceEvent.stopPropagation();

C#WinForm邊框窗體移動方法、模仿鼠標單擊標題欄移動窗體位置

發送 mage log sin mes win sender src using C#WinForm無邊框窗體移動方法、模仿鼠標單擊標題欄移動窗體位置 這裏介紹倆種辦法 方法一:直接通過修改窗體位置從而達到移動窗體的效果 方法二:直接偽裝發送單擊任務欄消息,讓應用程序

vue+mousemove實現,鼠標移動過快就失效

拖動 win text cli prev point element lis 問題 今天用vue+原生js的mousemove事件,寫了個拖動,發現只能慢慢拖動才行,鼠標只要移動快了,就失效,不能拖動了; 搞了半天在,總算解決了,但是問題的深層原理還沒搞清楚,知道的大俠可以

QT邊框移動可改變大小窗體

Win8,win10都出來了,為了迎合系統的扁平化風格,專案要求窗體是無邊框,看了一下QT的主要Widget,沒有現成的,好吧,那就只有自己寫了。 在網上也看到了一些程式碼,進行小結了一下,無邊框窗體大小的改變,移動都需要自己處理,不在像有邊框的窗體一樣自動處理,處理起來目

c#禁止雙擊最大化,邊框窗體移動

轉載的,不是特別懂,以後再看 protected override void WndProc(ref Message m) {     switch (m.Msg)     {         case 0x84:             base.WndProc(ref m);          

C#去邊框以及邊框窗體移動

1.去邊框  : 1) 選中要去除邊框的窗體,按F4調出窗體屬性。 2)在屬性框中找到FormBorderStyle選擇none。 去邊框之前效果 去邊框之後效果 2.去掉邊框後實現對視窗程

C# 鼠標點擊移動窗體代碼,可以實現邊框窗體的

點擊 obj cat += tar sender see sed false private static bool IsDrag = false; private int enterX; private int enterY;

PyQt4中邊框視窗的移動

搜尋了很多文章,有關於Qt的C++版本無邊框視窗的拖動: 其中主要講到兩種方法,但是PyQt(Qt的Python版本)實現就沒有找到,以下主要講PyQt4中的實現 方法1:在QWidget/QDialog中重寫mousePressEvent和mouseM

pyqt5_控件_自定義邊框窗體

spa 窗體拖動 ica 定義 event sta track gets button from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * import sy

Qt 標題邊框程序的和改變大小

又一 through poi rip 有時 target ram internal 以及 最近做項目遇到的問題,總結下。 有時候我們覺得系統的標題欄和按鈕太醜太呆板,想做自己的標題欄以及最大化、最小化、關閉,菜單按鈕,我們就需要 [cpp] view p

Qt自定義邊框介面(可放大、縮小及

Qt自定義無邊框介面 使用者介面(User Interface)是指對軟體的人機互動、操作邏輯、介面美觀的整體設計。好的UI設計不僅是讓軟體變得有個性有品味,還要讓軟體的操作變得舒適、簡單、自由、充分體現軟體的定位和特點。很多時候,Qt本地樣式可能無法實現讓我們的介面更簡化、美觀,那麼這

C#Winform實現邊框窗體滑鼠

在有時候我們為了實現軟體的美觀,我們需要把窗體的邊框隱藏,但是問題也會隨之而來,在屬性中設定了FormBorderStyle應該為None,邊框便可以隱藏,但是我們在使用軟體時卻無法拖動窗體,

WPF邊框視窗滑鼠縮放大小

通常,我們會 通過AllowsTransparency=”True”、 WindowStyle=”None” 這兩個屬性將wpf視窗的邊框去掉,由於邊框沒了,我們就不能通過滑鼠指標懸停在某一邊上拖動改變視窗的大小,此時若要能調整視窗大小,官方倒也提供了個屬性:R

Qt 邊框無非客戶區視窗、縮放改變大小、滑鼠變形,windows同款,完美實現

簡單點說,是在windows下實現視窗拖動和改變大小,一種方法是過載mousePressEvent系列全家福函式,然後在mouseMoveEvent中實現邊移滑鼠視窗就一邊重繪。這種方法網上資料很多,見下:這種方法缺點是移動的時候視窗閃爍厲害。摒棄。但該方法給了一個很好的思路

PyQt5邊框視窗的標題和視窗縮放實現

網上找了半天都找不到好用的PyQt5無邊框視窗的實現 借鑑部分前輩的視窗拖放程式碼 自己搗鼓了一下,實現了一下無邊框視窗,問題可能還有一點,慢慢改吧 先做個筆記 py檔案 #!/usr/bin/env python #-*- coding:utf-

Winform邊框視窗及改變視窗大小

Winform無邊框視窗(FormBorderStyle屬性為None)預設是不可以拖動或者改變大小的。 1.      拖動無邊框視窗改變位置 方法1:通過mousedown、mousemove、mouseup、事件來改變視窗Location。 方法2:通過截獲訊息,進行

[MFC] 邊框視窗的Resize效果的實現(下):子視窗覆蓋,導致主視窗熱點區無法響應WM_NCHITTEST

這篇博文講解了如何實現無邊框視窗的Resize拖動效果,文中提到,需要響應主視窗的WM_NCHITTEST訊息,檢測滑鼠是否在resize熱點區並返回HTTOPLEFT、HTBOTTOM等相應的結果。

c++builder如何通過滑鼠改變邊框窗體的大小(bsnone)

在C++Builder中,將Form的BorderStyle設為bsNone以後該窗體將沒有邊框,不能改變窗體大小,也不能拖動窗體。那麼如何拖動及用滑鼠改變無邊框窗體大小呢?拖動無邊框窗體的解決方法很多,例如:1. 向窗體傳送WM_NCLBUTTONDOWN訊息,LParam = HTCAPTION2. 向窗