Contents
Introduction
I've read a lot about Opera, so a couple of months ago I finally got around to downloading it. There's loads of stuff that I really liked about Opera, but the real killer feature was the mouse gesture support. After a few hours of browsing using mouse gestures I was really hooked.
Unfortunately I found that a number of pages, especially ones that I have to use regularly for work, weren't being rendered properly (I'm not sure if it was Opera rendering the page incorrectly, or the HTML that was incorrectly formatted - I suspect the latter).
This article discusses how I've added mouse gesture support to Internet Explorer. The code presented isn't intended to detail every step in the implementation (hopefully the source code will do this); rather it's intended to provide a quick sketch of the steps involved.
Important: To build the source project you'll need to have WTL 7.0 installed. You can download it here. See also Easy installation of WTL.
Implementation
I identified there were three key things I'd have to be able to do to add mouse gesture support to Internet Explorer:
- Track the movement of the mouse in the browser window
- Pass the mouse track through a gesture recognition algorithm
- Provide actions for the most common mouse gestures
Tracking the mouse
Using the Spy application that comes with Visual Studio I identified that the window that renders the HTML (and therefore the one I'd want to track the mouse movement within) was of class Internet Explorer_Server. All I needed to do was to somehow subclass this window (see Create your own controls - the art of subclassing and Subclassing controls in ATL dialogs using WTL): I'd be able to add a message handler for all the mouse messages and be well on my way.
There were two ways I could see of being able to subclass the Internet Explorer_Server window:
- Embed a WebBrowser control in (for example) an MFC dialog application, and subclass the window in the
OnInitDialog method
- Somehow inject my code into Internet Explorer
Option 2 was far more attractive - who would want yet another web browser application?
I was familiar with Jeffrey Richter's technique of injecting DLLs into another process (see API hooking revealed) when I came across John Osborn's Popup Window Blocker. In his article, John discusses how to write a Browser Helper Object (BHO - a DLL that will attach itself to every instance of Internet Explorer) in ATL. Just what I wanted.
I knocked up a quick ATL project, implemented the IObjectWithSite interface, and pretty soon I had access to the HWND of the web-browser:
STDMETHODIMP BrowserHelperObject::SetSite( IUnknown *pUnkSite )
{
CComQIPtr< IWebBrowser2 > pWebBrowser = pUnkSite;
if( pWebBrowser )
{
HWND hWnd;
pWebBrowser->get_HWND( (long*)&hWnd );
}
}
The HWND is a handle to a window of class IEFrame. A quick look with Spy showed that IE 6.0 implemented the following (window) class hierarchy:

Child window creation
At the point when the SetSite method of our browser helper object is called, the Shell DocObject View and Internet Explorer_Server windows haven't yet been created.
Version 1.0 of the plug-in, watched for the creation of the Shell DocObject View window by (temporarily) subclassing the IEFrame window and watching for the WM_PARENTNOTIFY message:
class Observer
{
public:
virtual void OnChildCreate( HWND hWnd )
{
enum { BUFFER_SIZE = 128 };
TCHAR buffer[ BUFFER_SIZE ];
::GetClassName( hWnd, BUFFER_SIZE );
}
};
class ParentNotifyTracker : public CWindow< ParentNotifyTracker >
{
public:
void Advise( HWND hWnd, Observer *pObserver )
{
}
BEGIN_MSG_MAP( ParentNotifyTracker )
MESSAGE_HANDLER( WM_PARENTNOTIFY, OnParentNotify )
END_MSG_MAP()
LRESULT OnParentNotify( UINT, WPARAM wParam,
LPARAM lParam, BOOL &bHandled )
{
if( LOWORD( wParam ) == WM_CREATE )
{
m_pObserver->OnChildCreate( (HWND)lParam );
}
bHandled = FALSE;
return 0;
}
};
This worked quite well for IE 6.0, but I found that when in a multiframe document, IE 5.0 implements the following window hierarchy (IE 6.0 always uses the simple hierarchy above):

Each frame is displayed in the lower level Internet Explorer_Server windows. Initially, all I thought I would have to do is to extend the ParentNotifyTracker mechanism to watch for the creation of Shell Embedding windows, and track the mouse gestures in multiple Internet Explorer_Server windows.
Unfortunately, when the Shell Embedding window is created it doesn't send a WM_PARENTNOTIFY message (it would appear that the WS_EX_NOPARENTNOTIFY style is set on the Shell Embedding window). An alternative approach to watching window creation was required.
Windows Hooks
I knew from reading API hooking revealed that I could add a hook to trap all the window creation messages. However as stated in MSDN (and also in the API hooking article):
Hooks tend to slow down the system because they increase the amount of processing the system must perform for each message. You should install a hook only when necessary, and remove it as soon as possible.
As far as I'm aware, Internet Explorer is a multi SDI application; i.e. multiple documents (or web browsers) are opened within the same process, each document having its own thread to pump messages. Therefore, I've only got to hook all the messages for a specific thread (rather than installing a global hook) to receive notifications of windows being created. While this does impose a greater overhead than subclassing a window, there doesn't appear to be a noticeable increase in load using this technique.
If there's sufficient interest, I'd consider writing an article describing in more detail how I've utilised the hook (I do some interesting stuff with thread local storage) but for now WindowHook.cpp and WindowHook.h in the source code should provide enough info to be going on with.
In version 1.0 of the plug-in, I didn't realise that when Internet Explorer displays an HTML document, and is then updated to display (for example) an XML document, a new Internet Explorer_Server window is created. At this point, the plug-in stopped being able to track the mouse. Using the hook mechanism meant that I was able to see the creation/destruction of all Internet Explorer_Server windows.
MouseTracker
Once we've been notified of the creation of our Shell DocObject View window, we can use the same class to watch this window for the creation of the Internet Explorer_Server window. Now that we've got our Internet Explorer_Server window, we can permanently subclass the window to receive all mouse events:
typedef std::vector< POINT > Path;
class MouseTracker : public CWindowImpl< MouseTracker >
{
struct Watcher
{
virtual void OnLeftButtonUp( const Path &path );
virtual void OnRightButtonUp( const Path &path );
};
BEGIN_MSG_MAP( MouseTracker )
MESSAGE_HANDLER( WM_MOUSEMOVE, OnMouseMove )
MESSAGE_HANDLER( WM_RBUTTONDOWN, OnRightButtonDown )
MESSAGE_HANDLER( WM_RBUTTONUP, OnRightButtonUp )
MESSAGE_HANDLER( WM_LBUTTONDOWN, OnLeftButtonDown )
MESSAGE_HANDLER( WM_LBUTTONUP, OnLeftButtonUp )
MESSAGE_HANDLER( WM_MOUSEWHEEL, OnMouseWheel )
END_MSG_MAP()
};
We start tracking the mouse when the user holds the mouse down (WM_LBUTTONDOWN and WM_RBUTTONDOWN). While the button is held down, we store each point the mouse visits (from the WM_MOUSEMOVE message) in some suitable container (e.g. an STL vector), and we complete tracking when the user lets go off the mouse (WM_LBUTTONUP and WM_RBUTTONUP). When the user releases the mouse we inform our client of the mouse track via the OnLeftButtonUp and OnRightButtonUp methods on the Watcher callback interface.
If the user moves the mouse out of the window rectangle and releases the mouse while we're tracking, we won't receive the button up notification (it will get sent to whatever window the mouse is currently over). However, once we've started tracking a gesture, we want to keep tracking until the user lets go off the mouse button. We solve this problem by calling ::SetCapture when we start tracking (WM_LBUTTONDOWN and WM_RBUTTONDOWN) and ::ReleaseCapture when we've finished tracking (WM_LBUTTONUP and WM_RBUTTONUP).
BrowserWatcher
The browser watcher class maintains a list (but, implemented using std::map) of MouseTracker objects - one for each Internet Explorer_Server window created. Whenever a Internet Explorer_Server is destroyed, the corresponding MouseTracker object is removed from the list and destroyed.
Gesture recognition
So far, we've been able to subclass the IE web browser window and record the mouse movements within. Now to make sense of the movements, but where to start? I did a quick search of the CodeProject web site, which turned up a fantastic article on Mouse gesture recognition by Konstantin Boukreev. With a minimal amount of tweaking, I was able to integrate the source from his GestureApp into my browser helper object:
enum GesturePattern;
class GestureTracker : public MouseTracker::Watcher
{
public:
struct Observer
{
virtual void OnMouseGesture( GesturePattern pattern );
};
private:
void OnLeftButtonUp( const Path &path );
void OnRightButtonUp( const Path &path )
{
int pattern = m_gesture.Recognize( path );
if( pattern != -1 )
{
m_pObserver->OnGesture( pattern );
}
}
private:
Gesture m_gesture;
Observer *m_pObserver;
};
See GestureTracker.cpp and GestureTracker.h in the source code for full implementation details.
Many thanks to Konstantin who has kindly allowed me to reuse his source in my plug-in.
Browser actions
My intention here was to replicate most of the functionality provided by Opera. For the most part, this proved really easy to implement, either exercising the functionality exposed by the IWebBrowser interface, or by sending Windows messages directly to the IE frame.
Hit test - IE 6.0
The gesture I was most keen to replicate was the ability to open a link in a new window (hold the right button and move down). Initially this seemed quite simple to implement:
void HitTest( IWebBrowser2 *pWB, const POINT &pt )
{
HRESULT hr;
CComPtr< IDispatch > pDisp;
hr = pWB->get_Document( &pDisp );
CComQIPtr< IHTMLDocument2 > pDoc = pDisp;
if( pDoc )
{
CComPtr< IHTMLElement > pElement;
hr = pDoc->elementFromPoint( pt.x, pt.y, &pElement );
CComBSTR url = GetHRefFromAnchor( pElement );
if( url.Length() )
{
CComPtr< IWebBrowser2 > pApp;
hr = pApp.CoCreateInstance( __uuidof( InternetExplorer ) );
hr = pApp->Navigate2( &url );
}
}
}
This worked fine when viewing single frame pages, but when viewing multi frame pages (e.g. Google's USENET browser), I'd often end up navigating to either my default home page, worse, a random link on the document.
Consider a single frame document:

Let's assume that the position of our link is (x0,y0) relative to the top left corner of the browser window.
If we embed the same page in a multiframe document:

Let's assume that the position of our link is (x1,y1) relative to the top left corner of the browser window.
Now when we call elementFromPoint with (x1,y1), we're returned a pointer to the frame element (which also happens to be of type IWebBrowser2). We need to call elementFromPoint against this new web browser window, but adjusting our point by the offset of the frame (xf,yf) within the main document.
Our code now looks something like this:
void HitTest( IWebBrowser2 *pWB, const POINT &pt )
{
HRESULT hr;
CComPtr< IDispatch > pDisp;
hr = pWB->get_Document( &pDisp );
CComQIPtr< IHTMLDocument2 > pDoc = pDisp;
if( pDoc )
{
CComPtr< IHTMLElement > pElement;
hr = pDoc->elementFromPoint( pt.x, pt.y, &pElement );
CComQIPtr< IWebBrowser2 > pFrame = pElement;
if( pFrame )
{
SIZE offset = GetElementOffset( pElement );
POINT ptInFrame = { pt.x - offset.cx, pt.y - offset.cy };
return HitTest( pFrame, ptInFrame );
}
CComBSTR url = GetHRefFromAnchor( pElement );
if( url.Length() )
{
CComPtr< IWebBrowser2 > pApp;
hr = pApp.CoCreateInstance( __uuidof( InternetExplorer ) );
hr = pApp->Navigate2( &url );
}
}
}
Hit Test - IE 5.0
All this worked really well with IE 6.0 but you'll recall that IE 5.0 has a different multiframe window hierarchy to IE 6.0:

As we've now got a different window hierarchy, I had to reinvestigate the HitTest for the 'open link in a new window' feature (remember we don't have embedded frame elements any more, we have embedded windows). A quick Google and I came across the following mechanism for retrieving the document associated with a particular window:
const UINT WM_HTML_GETOBJECT = ::RegisterWindowMessage(
_T( "WM_HTML_GETOBJECT" ) );
HRESULT GetDocument( HWND hWnd, IHTMLDocument2 **ppDocument )
{
DWORD res = 0;
if( ::SendMessageTimeout(
hWnd,
WM_HTML_GETOBJECT,
0,
0,
SMTO_ABORTIFHUNG,
1000,
&res
) == 0 )
{
return E_FAIL;
}
return ::ObjectFromLresult(
res,
IID_IHTMLDocument2,
0,
reinterpret_cast< void ** >( ppDocument )
);
}
Our hit test can now be implemented as:
HRESULT HitTest( HWND hWnd, const POINT &pt )
{
HRESULT hr;
CComPtr< IHTMLDocument2 > pDoc;
hr = GetDocument( hWnd, &pDoc );
if( pDoc )
{
CComPtr< IHTMLElement > pElement;
hr = pDoc->elementFromPoint( pt.x, pt.y, &pElement );
}
return hr;
}
I've now run the plug-in against IE 5.5 and (thankfully!) it has the same window class hierarchy as IE 6.0. Note that IE 4.0 does not support browser helper objects so the plug-in won't work on this platform.
Conflicts with other Browser Helper Objects
A number of users of version 1.0 of the plug-in informed me that it crashed whenever they performed any gesture using the right mouse button. Of course, everything worked fine on my development machine ;-)!!
tong_du noted that while he had the Google toolbar installed the mouse gestures were dead. As soon as he uninstalled the Google toolbar, the mouse gestures worked fine.
Jeff Fitzsimons debugged the code and found the SynthesiseRightClick method failed to (temporarily) unsubclass the window resulting in the plug-in sending WM_RBUTTONDOWN/WM_RBUTTONUP causing the SynthesiseRightClick function to be called recursively, resulting in a stack overflow. (See Re: Right click problem: too.)
The call to UnsubclassWindow was failing because the WNDPROC stored by the window (see GetWindowLong and GWL_WNDPROC) differed to the WNDPROC stored in the window's thunk (see p423-429 of ATL Internals for an explanation of how ATL employs thunks). I'm guessing, but I suspect the reason that UnsubclassWindow fails is that another ATL CWindowImplBaseT also subclasses the Internet Explorer_Server.
I got around this by setting a flag (m_isSuspended) in the MouseWatcher class and when the flag is set all messages are ignored. See the BEGIN_MSG_MAP_EX macro in MouseTracker.h.
Many thanks to tong_du, Jeff Fitzsimons and Rich Buckley for their help in tracking this problem. Cheers Guys!!!
Conflicts with right-left scripts
A few of the users of the plug-in had noted that when using the plug-in with right-left scripts (like Hebrew or Azerri(Cyrillic)), keyboard input was getting screwed up. After a couple of frustrating months being unable to recreate this on my dev machine(s) I finally managed to track down the problem. The original mouse gestures plug-in used the MBCS character set. As soon as I rebuilt the plug-in to use the Unicode character set, keyboard input worked the same with or without the plug-in.
I guess having MBCS and Unicode message handlers on a window isn't a good idea! Many thanks to lkj1, orlink and Eli Stern who gave me much valuable feedback in trying to resolve this bug.
Using Mouse Gestures
Once the mouse gestures plug-in has been installed/registered, all you need to do is open a new instance of Internet Explorer. If everything is working OK, you should have a new entry 'Mouse Gestures...' in IE's Tools menu:

Clicking on this option should bring up the following dialog box:

To get the idea of how to use mouse gestures:
- Move the mouse over the bitmap (currently showing two cars in a circle)
- Hold down the right mouse button, and drag the mouse down - you won't have to move the mouse too far
- Let go off the right mouse button
Hopefully the bitmap has been updated to show a down arrow:

It's as easy as that. Scroll the items in the Gesture combo box to see the gestures currently supported and the actions associated with the gesture.
To associate your own actions with a particular gesture, simply select the gesture (or perform it over the image), select the action, and click on 'Apply'.
User Actions
To support a wider range of actions, the Mouse Gestures plug-in allows you to associate keyboard shortcuts with a gesture:

Set the keyboard focus to the 'Shortcut key' edit box, and then hold down the required keys. The edit box will update to show the shortcut key. Note that invalid shortcuts (like the Ctrl key on its own) aren't allowed, and will be displayed as 'None' in the shortcut key window.
Now, whenever you perform the appropriate gesture, the Mouse Gestures plug-in will send the equivalent key strokes to Internet Explorer.
The 'Open in new window' action
A final special note about the 'Open in new foreground/background window' action:
- If the gesture is started over a hyperlink, the target of the hyperlink is opened in a new window (the same as if you'd right clicked on the hyperlink and selected 'Open in New Window').
- If the gesture is started over a region of highlighted text, then the Mouse Gestures plug-in will treat the text as a hyperlink target, and try to open the new window at that page.
- If the gesture is started any where else in the browser window, then a new window is opened at your home page.
Mouse Trails
One of the most requested enhancements to the plug-in was the ability to draw mouse trails. This seemed like an interesting thing to do, so when I finally committed to doing this, I looked around to see what had already been done in this area. I found a plug-in for the Firefox browser, but the trails it generated were at best basic. I wanted something that looked like XP not Win3.1!
After much prototyping, I've come up with something that ticks all the right boxes. To see how the mouse trails works, select the 'Mouse Trails' sheet of the Mouse Gestures configuration dialog:

Make sure that 'Enable mouse trails' is ticked, and perform a mouse gesture over the exclamation icon. The trail should look something like this:

When you end the gesture, the trail fades into the background. You might need to play around with the settings to determine the best combination of settings for your PC. Note: You'll need a quite powerful graphics card to get the full mouse trail experience. The trails will draw on a 2MB video card, but they can make the mouse a little jerky.
Details of how the mouse trail window is implemented are available in MouseTrail.h and TrailWindow.h in the attached source code.
Improvements
Some extra functionality that I eventually intend to add:
- Add gesture support to applications that use an embedded Microsoft Web Browser control (like MSDN and Outlook).
- Update the installer so that the DLL is removed when IE or Explorer has an instance of the DLL open.
Any other suggestions welcome.
Revision History
- 25 September 2003: Initial version (1.0)
- 04 November 2003: Version 1.0.0.4 - Bug fixes
- 09 April 2004: Version 1.0.1.1 - Updated to work with right-left scripts and for Visual Studio .NET 2003
- 27 May 2004: Version 1.0.3.1 - Bug fixes (special thanks to dchris_med!)
- 10 June 2004: Version 1.0.4.1 - Added new actions and gestures
- 24 June 2004: Version 1.1.0.2 - Added support for keyboard shortcuts (& bug fixes)
- 07 September 2005: Version 1.2.0.1 - Added mouse trails, IE7 (Beta 1) support
| You must Sign In to use this message board. |
|
|
 |
|
 |
Hello
First of all I would like to thank you for providing us with such a good software. Unfortunatelly I am having some problems with some specific gestures.
I am working in Internet Explorer 8 Windows 7 Latest gestures version
The gestures not working are the tab related ones. I cant get the previous and next tab gestures to work.
I tried to switch the mouse gestures to up left and up right but it doesnt work
Is this a known problem or?
Has anyone else experienced this problem?
Is there a solution?
|
| Sign In·View Thread·PermaLink | 5.00/5 |
|
|
|
 |
|
 |
Dear Author Thank you for wonderful software.
OS Windows 7 RC 32bit Internet Explorer 8 Mouse Gestures for Internet Explorer Version 2.1.0.3 (x86)
The position of the toolbar of IE8 disappears when Toggle full screen of Action is used. Moreover, the Export is not made good. Please improve them.
Regards.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Dear Author Thank you for the correction. I confirmed them.
However, new trouble was found. The Gesture of Right Down doesn't function. I'm sorry for sending many times. Please improve it.
Regards.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi, I want to get the Internet Explorer event notification ?
When user click on Back , Farward ,Refresh Button from IE and Right Click on Link , Click on Favorities link , Histoty Pane link(URL)or Index , and When user select tab , OpeninNewWindow , OpennewTabwith , OnClick . How can I get these Notification from Internet Explorer ?
Thanks,
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
When I clicked drop-down combo box, I got the IE crashing error. So, I got a break point in Remove(hWnd) of BrowserWatcher::OnCreate()..
then, className of hWnd was "Internet Explorer_Server".
It was very strange. why is the className of the drop-down combo "Internet Explorer_Server"?
and IE got crashed again.. why?
anybody knows the reason?
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
I fixed the error.
If you modify the source file BrowserWatcher.cpp as follows, then your code will work fine.
void BrowserWatcher::OnCreate( HWND hWnd ) { tstring className = WindowHelper::GetClassName( hWnd ); tstring parentClass = WindowHelper::GetClassName( ::GetParent( hWnd ) );
...
else if( className == CLASS_IE_SERVER && parentClass == CLASS_SHELL_DOC_VIEW ) { doTracking = true; } ... }
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
First, great article! Second, I know I may be posting this in the wrong place, but...
I am trying to implement something similar in a PocketIE-based Windows Mobile browser. As of Windows Mobile 5, the browser control supports IWebBrowser2 and the same events interface (prior to that, less full-featured interfaces were provided).
My problem is that the mobile webbrowser control still does not support IHTMLDocument2. In its place is IPIEHTMLDocument2, and it is lacking in elementFromPoint. I've been trying to find some way to get the element that the stylus (mobile equivalent of the mouse) is on when the context menu is displayed (to customize the menu).
Any ideas / suggestions?
- MvL
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hello,
I search a technology to search all the add on installed for IE. And after know if the add on is enabled or not.
I have not ideas, how to do that. Javascript, HTML, C++, or use an API.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
 |
Is there an uninstaller for Mousegestures.exe please? I was so pleased to see gestures for IE I didn't notice that Win Vista is not supported yet. thanks
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
 |
if you enable mouse trails, and ie has running, any opengl application will response very slowly. you can try opengl application googleearth
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
I want to know that is that possible in BHO that we can write an html tag after specific word in the html page that is browsed by the IE..
thanks Shafqat
|
| Sign In·View Thread·PermaLink | 1.33/5 |
|
|
|
 |
|
 |
Hello Ralph,
I saw your that you have experience in creating AddOns for IE.
We are building a similar AddOn for IE which would display meaning in different languages. Our AddOn is working fine in IE6 and funtionality is also working fine in IE7 but IE7 crashes everytime we click on dropdown.
You can see the exact problem here:
http://forums.microsoft.com/msdn/ShowPost.aspx?postid=1647690&siteid=1
I would appreciated if you can help us.
Thank you in advance
Nemesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hellp Ralph,
I just read few posts here and found that people are having same problems with your AddOn. IE7 Crashes on selecting frop down boxes. Were you able to solve the problem.
Please please please help. Its very urgent.
Thank you in advance for your early reply 
Nemesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
I've written a gesture application mojo Sidekick www.cityzen451.com and was wondering, if the mouse trace technique use in you example could be applied to the desktop and whole screen rather than just a single application window and whether if could be converted to a dll so I could simply plug it into my code
Regards
James Rowan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Great code, but for some reason when I select an item in a drop down box on any webpage the browser crashes. Both IE6 and 7.
I'm using WTL 7.5.
The code works fine if I comment out this line: delete (*it).second; in function: void BrowserWatcher::Remove( HWND hWnd )
Of course, that I'm sure causes a lot of memory leaks, but it at least shows what is causing the problem. I'll try to figure it out on my own if I can...
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Everytime I right click and drag to left to previous page or document, i get this message and I get disconnected from the web page back to the desk top. I am not a genius at computers, but pretty good. please keep answer simple.
jeepf
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
 | Help!  Marth 010 | 14:07 7 Feb '07 |
|
 |
I want had to uninstall it but when I hold the right button down it still makes the trails and preforms the actions. Is there any way to stop this?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
 |
Is it possible to use Javascript in IEAddon? What is the best way to convert Firefox extension to IE7 Addon?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
It's defintely possible to use Javascript with the mouse gestures plugin - see the script actions page in the configuration dialog.
I guess the conversion of the ff extension depends on the functionality - I'd certainly spend some time reading up on Browser Helper Objects tho'.
HTH,
Ralph
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
i open the source code.when build the project,there appear lots of errors in WTL library header files. i try my best and can't deal with the trouble as a WTL beginner . of course i make sure that has installed the WTL library and wizard correctly .
configuration : Visual Studio .NET 2003, WTL 7.0
生成日志 ------- 已启动生成: 项目: MouseGestures,配置: Debug|Win32 -------
命令行 正在创建临时文件“e:\vs_project\MouseGestures\src\Debug\RSP000001.rsp”,其内容为 [ /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_USRDLL" /D "_ATL_ATTRIBUTES" /D "NOMINMAX" /D "_WINDLL" /D "_ATL_STATIC_REGISTRY" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MTd /Zc:wchar_t /GR /Yu"stdafx.h" /Fp"Debug/MouseGestures.pch" /Fo"Debug/" /Fd"Debug/vc70.pdb" /W4 /c /Wp64 /ZI /TP .\WindowHook.cpp .\WindowHelper.cpp .\UserActionPage.cpp .\UserActionManager.cpp .\TrailWindow.cpp .\TrailsPage.cpp .\TrailManager.cpp .\TrackBarCtrlEx.cpp .\OSUtils.cpp .\MouseTrackerEx.cpp .\MouseTracker.cpp .\MouseGestures.cpp .\MLNet.cpp .\MessageHook.cpp .\KeyboardHook.cpp .\HotKeyCtrlEx.cpp .\GestureTracker.cpp .\GestureMapPage.cpp .\GestureManager.cpp .\GestureData.cpp .\Gesture.cpp .\GDIUtils.cpp .\ExplorerListDlg.cpp .\CriticalSection.cpp .\BrowserWatcher60.cpp .\BrowserWatcher50.cpp .\BrowserWatcher.cpp .\BrowserHelperObject.cpp .\Action.cpp ] 正在创建命令行“cl.exe @e:\vs_project\MouseGestures\src\Debug\RSP000001.rsp /nologo” 正在创建临时文件“e:\vs_project\MouseGestures\src\Debug\RSP000002.rsp”,其内容为 [ /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_USRDLL" /D "_ATL_ATTRIBUTES" /D "NOMINMAX" /D "_WINDLL" /D "_ATL_STATIC_REGISTRY" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MTd /Zc:wchar_t /GR /Yc"stdafx.h" /Fp"Debug/MouseGestures.pch" /Fo"Debug/" /Fd"Debug/vc70.pdb" /W4 /c /Wp64 /ZI /TP .\stdafx.cpp ] 正在创建命令行“cl.exe @e:\vs_project\MouseGestures\src\Debug\RSP000002.rsp /nologo” 输出窗口 正在编译... stdafx.cpp e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(162) : error C2146: 语法错误 : 缺少“;”(在标识符“atlTraceUI”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(162) : error C2501: “CTraceCategory” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(162) : error C2501: “atlTraceUI” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(162) : error C2371: “WTL::atlTraceUI” : 重定义;不同的基类型 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(160) : 参见“WTL::atlTraceUI”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(162) : error C2440: “初始化” : 无法从“const wchar_t [11]”转换为“int” 该转换要求 reinterpret_cast、C 样式转换或函数类型转换 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(228) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(228) : error C2501: “WTL::CMessageLoop::CSimpleArray” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(228) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(229) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(229) : error C2501: “WTL::CMessageLoop::CSimpleArray” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(229) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(353) : error C2504: “CComModule” : 未定义基类 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(356) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(356) : error C2501: “WTL::CAppModule::CSimpleMap” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(356) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(357) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(357) : error C2501: “WTL::CAppModule::CSimpleArray” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(357) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(360) : error C2061: 语法错误 : 标识符“_ATL_OBJMAP_ENTRY” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(490) : error C2061: 语法错误 : 标识符“_ATL_OBJMAP_ENTRY” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(1002) : error C2065: “_pModule” : 未声明的标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(1002) : error C2227: “->GetResourceInstance”的左侧必须指向类/结构/联合 类型是“'unknown-type'” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(1004) : error C2227: “->GetResourceInstance”的左侧必须指向类/结构/联合 类型是“'unknown-type'” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlapp.h(1004) : error C3861: “_pModule”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(51) : error C2227: “->GetResourceInstance”的左侧必须指向类/结构/联合 类型是“'unknown-type'” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(51) : error C3861: “_pModule”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(72) : error C2227: “->GetResourceInstance”的左侧必须指向类/结构/联合 类型是“'unknown-type'” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(72) : error C3861: “_pModule”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(297) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atluser.h(403) : 参见对正在编译的类模板实例化“WTL::CMenuT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlgdi.h(2019) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlgdi.h(2649) : 参见对正在编译的类模板实例化“WTL::CDCT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlgdi.h(2019) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlgdi.h(2659) : 参见对正在编译的类模板实例化“WTL::CDCT”的引用 with [ t_bManaged=true ] e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(245) : error C2504: “CWindowImplBaseT” : 未定义基类 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(904) : 参见对正在编译的类模板实例化“WTL::CFrameWindowImplBase”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(245) : error C2143: 语法错误 : 缺少“,”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(1019) : error C2504: “CWindow” : 未定义基类 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(1764) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(1764) : error C2501: “WTL::CUpdateUIBase::CSimpleArray” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(1764) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(2466) : error C2143: 语法错误 : 缺少“;”(在“<”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(2760) : 参见对正在编译的类模板实例化“WTL::CDialogResize”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(2466) : error C2501: “WTL::CDialogResize::CSimpleArray” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlframe.h(2466) : error C2238: 意外的标记位于“;”之前 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(175) : error C2065: “CWindow” : 未声明的标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(175) : error C2955: “WTL::CStaticT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(173) : 参见“WTL::CStaticT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(295) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(295) : error C2955: “WTL::CButtonT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(293) : 参见“WTL::CButtonT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(497) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(620) : 参见对正在编译的类模板实例化“WTL::CListBoxT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(622) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(622) : error C2955: “WTL::CListBoxT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(620) : 参见“WTL::CListBoxT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(782) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(932) : 参见对正在编译的类模板实例化“WTL::CComboBoxT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(934) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(934) : error C2955: “WTL::CComboBoxT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(932) : 参见“WTL::CComboBoxT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1278) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1278) : error C2955: “WTL::CEditT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1276) : 参见“WTL::CEditT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1489) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1489) : error C2955: “WTL::CScrollBarT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(1487) : 参见“WTL::CScrollBarT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2120) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2120) : error C2955: “WTL::CToolTipCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2118) : 参见“WTL::CToolTipCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2280) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2280) : error C2955: “WTL::CHeaderCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2278) : 参见“WTL::CHeaderCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(2425) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3171) : 参见对正在编译的类模板实例化“WTL::CListViewCtrlT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3173) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3173) : error C2955: “WTL::CListViewCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3171) : 参见“WTL::CListViewCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3308) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3719) : 参见对正在编译的类模板实例化“WTL::CTreeViewCtrlT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3721) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3721) : error C2955: “WTL::CTreeViewCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3719) : 参见“WTL::CTreeViewCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3729) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3729) : error C2955: “WTL::CTreeViewCtrlExT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3728) : 参见“WTL::CTreeViewCtrlExT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3767) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3982) : error C2662: “WTL::CTreeViewCtrlExT::GetNextItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3987) : error C2662: “WTL::CTreeViewCtrlExT::GetChildItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3992) : error C2662: “WTL::CTreeViewCtrlExT::GetNextSiblingItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(3997) : error C2662: “WTL::CTreeViewCtrlExT::GetPrevSiblingItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4002) : error C2662: “WTL::CTreeViewCtrlExT::GetParentItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4007) : error C2662: “WTL::CTreeViewCtrlExT::GetFirstVisibleItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4012) : error C2662: “WTL::CTreeViewCtrlExT::GetNextVisibleItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4017) : error C2662: “WTL::CTreeViewCtrlExT::GetPrevVisibleItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4022) : error C2662: “WTL::CTreeViewCtrlExT::GetSelectedItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4027) : error C2662: “WTL::CTreeViewCtrlExT::GetDropHilightItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4032) : error C2662: “WTL::CTreeViewCtrlExT::GetRootItem” : 不能将“this”指针从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT &” 原因如下: 无法从“WTL::CTreeViewCtrlEx”转换为“WTL::CTreeViewCtrlExT” 转换要求第二个用户定义的转换运算符或构造函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4049) : error C2065: “CString” : 未声明的标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4049) : error C2065: “strText” : 未声明的标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4049) : error C2761: “GetText” : 不允许成员函数重新声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4049) : error C2143: 语法错误 : 缺少“;”(在“const”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4049) : error C2059: 语法错误 : “const” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4050) : error C2143: 语法错误 : 缺少“;”(在“{”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4050) : error C2447: “{” : 缺少函数标题(是否是老式的形式表? e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4134) : error C2440: “return” : 无法从“WTL::CEdit”转换为“HWND” 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4166) : error C2663: “WTL::CTreeViewCtrlExT::InsertItem” : 4 个重载没有“this”指针的合法转换 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4761) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4761) : error C2955: “WTL::CToolBarCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4759) : 参见“WTL::CToolBarCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4841) : error C2061: 语法错误 : 标识符“CString” e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4942) : 参见对正在编译的类模板实例化“WTL::CStatusBarCtrlT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4944) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4944) : error C2955: “WTL::CStatusBarCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(4942) : 参见“WTL::CStatusBarCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5135) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5135) : error C2955: “WTL::CTabCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5133) : 参见“WTL::CTabCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5314) : error C2146: 语法错误 : 缺少“;”(在标识符“GetBuddy”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5369) : 参见对正在编译的类模板实例化“WTL::CTrackBarCtrlT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5314) : error C2501: “WTL::CTrackBarCtrlT::CWindow” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5318) : warning C4183: “GetBuddy”: 缺少返回类型;假定为返回“int”的成员函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5319) : error C2146: 语法错误 : 缺少“;”(在标识符“SetBuddy”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5319) : error C2501: “WTL::CTrackBarCtrlT::CWindow” : 缺少存储类或类型说明符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5323) : warning C4183: “SetBuddy”: 缺少返回类型;假定为返回“int”的成员函数 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5371) : error C3861: “CWindow”: 即使使用参数相关的查找,也未找到标识符 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5371) : error C2955: “WTL::CTrackBarCtrlT” : 使用类模板需要模板参数列表 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5369) : 参见“WTL::CTrackBarCtrlT”的声明 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5423) : error C2146: 语法错误 : 缺少“;”(在标识符“GetBuddy”的前面 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5496) : 参见对正在编译的类模板实例化“WTL::CUpDownCtrlT”的引用 e:\Microsoft Visual Studio .NET 2003\Vc7\WTL\include\atlctrls.h(5423) : fatal error C1003: 错误计数超过 100;正在停止编译 结果 生成日志保存在“file://e:\vs_project\MouseGestures\src\Debug\BuildLog.htm”中 MouseGestures - 102 错误,2 警告
tfq2002
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
hi,
on your home page your version history suggests changes that don't seem to be in the source code to download, is this correct? any chance of an update?
i'm also having problems with crashes when using drop combos on web pages.
(btw i've built this using wtl 7.5 don't know wether that caused problems)
also i hacked the code so that i could hook gestures upto url's rather than shortcuts which i found useful...
great bit of code !
cheers
pete
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
Hi Pete,
Can you give me any more details about the crashes within the combo boxes - especially if you can give me a stack trace or similar.
I'm in the process of updating the plugin to add some of the cool stuff that firefox does and to try and address some of the stability issues some people seem to be experiencing. This includes the ability to fire-off url's from gestures. Time (and more importantly the day job permitting) I'll update the article including the source code then. Hopefully this'll be early in the new year.
Cheers,
Ralph
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|