#pragma once
#include "stdafx.h"
#include "resource.h"
//#include "GetURLDialog.h"
using namespace ATL;
#ifdef SHELL_AYGSHELL
我想修改simple,MiniPIE.exe的浏览器
现在想实现禁止文本选择等功能,
但是在网上找了很多资料都没有结果
请教各位大哥应该怎么修改代码~~~
以下是窗口代码的头文件~~#include <aygshell.h>
#pragma comment(lib, "aygshell.lib") 
#include <tpcshell.h> // Required for SHSendBackToFocusWindow
#endif // SHELL_AYGSHELL
#include   "mshtmhst.h" 
static const UINT ID_BROWSER = 1 ;
class CMainWindow :
    public CWindowImpl<CMainWindow, CWindow, CWinTraits<WS_CLIPCHILDREN | WS_CLIPSIBLINGS> >,
    public IDispEventImpl<ID_BROWSER, CMainWindow>
//,public IDocHostUIHandler
{
public:
    CMainWindow();
    ~CMainWindow();
    BOOL TranslateAccelerator(MSG* pMsg);//翻译加速器
    DECLARE_WND_CLASS(TEXT("MiniPIE.MainWindow"))
    BEGIN_MSG_MAP(CMainWindow)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)///创建
        MESSAGE_HANDLER(WM_SIZE, OnSize)//大小
        MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)//激活
        MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)//设置频道
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)//销毁
        COMMAND_ID_HANDLER(IDM_SK1_EXIT, OnExitCommand)//退出
        COMMAND_ID_HANDLER(IDM_BACK, OnBackCommand)//后退
        COMMAND_ID_HANDLER(IDM_FORWARD, OnForwardCommand)//前头发送
        COMMAND_ID_HANDLER(IDM_HOME, OnHomeCommand)//主页
        COMMAND_ID_HANDLER(IDM_OPENURL, OnOpenURLCommand)//打开网页
        COMMAND_ID_HANDLER(IDM_REFRESH, OnRefreshCommand)//刷新
        COMMAND_ID_HANDLER(IDM_STOP, OnStopCommand)//停止
    END_MSG_MAP()
private:
    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
    LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
    LRESULT OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
    LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
    LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled);    LRESULT OnExitCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnBackCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnForwardCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnHomeCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnOpenURLCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnRefreshCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnStopCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
public:
    BEGIN_SINK_MAP(CMainWindow)
        SINK_ENTRY(ID_BROWSER, DISPID_BEFORENAVIGATE2, &CMainWindow::OnBeforeNavigate2)//后退
        SINK_ENTRY(ID_BROWSER, DISPID_TITLECHANGE, &CMainWindow::OnBrowserTitleChange)
        SINK_ENTRY(ID_BROWSER, DISPID_NAVIGATECOMPLETE2, &CMainWindow::OnNavigateComplete2)//网页完成
        SINK_ENTRY(ID_BROWSER, DISPID_DOCUMENTCOMPLETE, &CMainWindow::OnDocumentComplete)//文档完成
        SINK_ENTRY(ID_BROWSER, DISPID_COMMANDSTATECHANGE, &CMainWindow::OnCommandStateChange)//一般状态改变
    END_SINK_MAP()private:
    void __stdcall OnBeforeNavigate2(IDispatch* pDisp, VARIANT * pvtURL, 
                                     VARIANT * /*pvtFlags*/, VARIANT * pvtTargetFrameName,
                                     VARIANT * /*pvtPostData*/, VARIANT * /*pvtHeaders*/, 
                                     VARIANT_BOOL * /*pvbCancel*/);
    void __stdcall OnBrowserTitleChange(BSTR bstrTitleText);
    void __stdcall OnNavigateComplete2(IDispatch* pDisp, VARIANT * pvtURL);
    void __stdcall OnDocumentComplete(IDispatch* pDisp, VARIANT * pvtURL);
    void __stdcall OnCommandStateChange(long lCommand, BOOL bEnable);
    // utility function
    BOOL SetEnabledState(UINT uMenuItemID, BOOL bEnable);
private:
    CAxWindow m_browser;
    // cached copy of hosted control's IWebBrowser2 interface pointer缓存副本托管控件的IWebBrowser2接口指针
    CComPtr<IWebBrowser2> m_spIWebBrowser2;
    CWindow m_menuBar;
    SHACTIVATEINFO m_sai;
public:
virtual void OnFinalMessage(HWND hWnd);
STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, 
DISPPARAMS* pDispParams,  VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,  UINT* puArgErr);};

解决方案 »

  1.   

    能不能先说说有什么意义?
    =======================================================
    FreeLaxy, your backup.
    =======================================================
      

  2.   

    mobile6.5以上习惯是用拖拉移动网页的
    禁止文本选择等功能就可以实现这种效果
    好像UC浏览器一样
      

  3.   

    给document或body添加onselectstart或许能行. 有些网页就是用这个方法不让用户复制内容.IHTMLDocument3::attachEvent("onselectionstart"....)
    =======================================================
    FreeLaxy, your backup.
    =======================================================