none
如何改变单文档,子窗口的一些属性?CHtmlView RRS feed

  • 问题

  • 我自已用CHtmlView自定义了浏览器 在视图中,打开新窗口用的是OnNewWindow2方法 但是在框架中,我把系统菜单去掉了cs.style &= ~WS_SYSMENU; 现在我想,在从视图中用OnNewWindow2方法打开新的网页中出现系统菜单,如何设置呀?

    PS:用OnNewWindow2方法打开,好象只有一个进程,每打开一个网页应该是开了一个新线程
    2009年6月9日 1:37

答案

  • 在OnNewWindow2函数中在创建的新文档中设置一个标志,然后在创建新框架时从文档读取这个标志再判断是否要去除WS_SYSMENU。
    MSMVP VC++
    2009年6月9日 17:11
    版主
  • 问题解决,老大就是老大:) 后来在APP中定义一个变量,在框架中判断和在视图OnNewWindow2中改变值,此方法可行
    2009年6月10日 2:43

全部回复

  • ModifyStyle(0, WS_SYSMENU, SWP_FRAMECHANGED); // add
    MSMVP VC++
    2009年6月9日 2:20
    版主
  • 谢谢Sheng Jiang的热心解答
    我在CMainFrame中把标题栏上的系统菜单去除了cs.style&=~WS_SYSMENU;
    (就是最原始的一个浏览器全屏,并且不能关闭,这是必须的)

    在CMyHtmlView中用的OnNewWindow2新打开的链接都是无系统菜单(无关闭,最小化,最大化按键)这就带来不能关闭这些新连接的子窗口的问题。
    在OnNewWindow2函数中,试了两种方法改变WS_SYSMENU设置,但都没有任何效果
    1.SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) & ~WS_SYSMENU);
    2.ModifyStyle(0, WS_SYSMENU, SWP_FRAMECHANGED);//此方法好象也没有效果啊

    现在我想改用其他方法来实现这一功能,试着改变默认浏览器,好象也不行
    我用CThmlView自定义了一个浏览器,本来是想用OnNewWindow2方法打开浏览器中的新窗口,无奈WS_SYSMENU设置老是不成功

    所以,现在我打算,在窗口中打开新连接时,也用这个自定义的浏览器
    现在问题是,如何设置成默认浏览器?就是打开新连接都用我这个定义的浏览器

    在网上搜索了一些修改注册表的方法?应该改的都改了,可还是不正确
    如何才能使新连接中也用自定义的浏览器打开呢???

    PS:
    注册表中,修改的六个地方
    HKEY_CLASSES_ROOT\htmlfile\shell\open\command
    HKEY_CLASSES_ROOT\InternetShortcut\shell\open\command
    HKEY_CLASSES_ROOT\http\shell\open\command
    HKEY_CLASSES_ROOT\https\shell\open\command
    HKEY_CURRENT_USER\Software\Classes\http\shell\open\command
    HKEY_CURRENT_USER\Software\Classes\https\shell\open\command

    或者说有什么好的方法或是思路啊?
    2009年6月9日 9:48
  • 在OnNewWindow2函数中在创建的新文档中设置一个标志,然后在创建新框架时从文档读取这个标志再判断是否要去除WS_SYSMENU。
    MSMVP VC++
    2009年6月9日 17:11
    版主
  • 在OnNewWindow2函数中在创建的新文档中设置一个标志,然后在创建新框架时从文档读取这个标志再判断是否要去除WS_SYSMENU。
    MSMVP VC++

    老大,我按你的思路做了
    我是在框架中定义一个int FrameMenu,初始为0
    在创建窗口前的函数CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中
    if(FrameMenu<=1)
      cs.style &= ~WS_SYSMENU;

    FrameMenu++;

    打开所有的窗口都是无系统菜单。
    2009年6月10日 1:33
  • 问题解决,老大就是老大:) 后来在APP中定义一个变量,在框架中判断和在视图OnNewWindow2中改变值,此方法可行
    2009年6月10日 2:43