精华内容
下载资源
问答
  • VB以二进制方式备份文件小程序,它有一个挺漂亮实用TAB式窗口,还可支持定时备份功能,通过操作TAB,可方便用户在备份与“定时备份”之间切换,本程序原型是针对数据库备份程序,文件一类未做测试,程序运行...
  • VC 多文档用户界面设计及各个文档之间的切换  用Delphi、VB、Windows Form(Visual C#)等称之为RAD(Rapid Application Development)的开发工具进行项目开发的都会很满足这些工具和平台提供的快速界面...

    VC 多文档用户界面设计及各个文档之间的切换

      用Delphi、VB、Windows Form(Visual C#)等称之为RAD(Rapid Application Development)的开发工具进行项目开发的都会很满足这些工具和平台提供的快速界面开发的功效:你可以很容易就可以实现一个MIS系统的管理界面,提供一个主框架,点击主框架上的某一个菜单项就打开一个处理事务的窗口,这些窗口可以重叠,可以最大/小化,一切看起来都像那么回事。但是当你在VC中进行开发的时候,发现整个世界都变了,虽然VC提供了MDI支持多文档视图的框架,但是每次你点击“打开”/“新建”菜单项的时候,你会发现新打开的窗口千孔一面,都是同一个样式,根本就不能满足项目的开发。这就需要你能够为不同的业务逻辑提供不同的显示/操作界面。这里给出一个模版,供大家参考:

      Step 1:使用VC 6.0新建一个Project,命名为:MIS。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainFrameCMISAppCMISDocCMISView,和CAboutDlg

      Step 2:新建一套新的Doc/View/Frame:添加新类CNewDoc,基类为CDocument(方法:Insert——>New Class(Class Type:MFC Class),基类选择CDocument)。添加新的框架类CNewChildFrame,基类为CMDIChildWnd,添加方法同上。添加新的视图类CNewView,方法:Insert——>New Form,对话框中的文档类选择为CNewDoc(默认也是)。

           Step 3:将菜单资源IDR_MAINFRAME中添加菜单项“功能”,并添加菜单子项“功能1”和“功能2”,分别对应项目开发中的不同的业务逻辑。为了保证整个过程中菜单项的一致性,在IDR_MAINFRAME上Ctrl + C,然后Ctrl +V两次生成和IDR_MAINFRAME一样的菜单两个,然后将这两个菜单分别改名为IDR_MISTYPE和IDR_VIEW2_TMPL(注意:先将后两个菜单名字Copy再删除它们,然后再改名,这里菜单的名字可以换,但是为了简单就直接使用系统生成的默认菜单名字,如果改变了名字要在New CMultiDocTemplate时刻修改相应项)。

      Step 4:在CMISApp中添加变量记录这两个框架类,为简单起见就声明为public(方便后面的访问,也就懒得管面向对象的设计原则了,因为仅仅是示例而已):

    public:
    CMultiDocTemplate* m_pDocTemplate1;
    CMultiDocTemplate* m_pDocTemplate2;

    并将BOOL CMISApp::InitInstance()函数中由VC自动生成的代码作如下改变:

    复制代码
    {  
          m_pDocTemplate2 = new CMultiDocTemplate(
                IDR_VIEW2_TMPL,          //这里就是菜单项目
                RUNTIME_CLASS(CNewDoc),          // document class
                RUNTIME_CLASS(CMDIChildWnd),         // frame class
                RUNTIME_CLASS(CNewView));        // view class
         AddDocTemplate(m_pDocTemplate2);
     
    
        m_pDocTemplate1 = new CMultiDocTemplate(
                  IDR_MISTYPE,
                  RUNTIME_CLASS(CMISDoc),
                  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
                  RUNTIME_CLASS(CMISView));
        AddDocTemplate(m_pDocTemplate1);
    }
    复制代码

    Step 5:在MainFrm.h中添加两个文档类变量记录这里的两个不同的Document,为简单起见就声明为public

    public: 
    CMISDoc* m_pDoc1;
    CNewDoc* m_pDoc2

    注意:在CMainFrame构造函数中将上面两个变量置为NULL(否则:))。并响应IDR_MAINFRAME的两个菜单项目“功能1”和“功能2”消息,在各自的响应菜单中分别添加响应函数:

    复制代码
     if (m_pDoc1 != NULL)   //已经打开则激活
           {
                  POSITION pos;
                  pos =m_pDoc1->GetFirstViewPosition();
                  CView* pView = m_pDoc1->GetNextView(pos);
                  pView->GetParentFrame()->ActivateFrame();
           }
           else
           {
                  CMISApp* pApp = (CMISApp*)AfxGetApp();
                  m_pDoc1 = (CMISDoc*)(pApp->m_pDocTemplate1->OpenDocumentFile(NULL));
           }
    
    和:
    
           if (m_pDoc2 != NULL)
           {
                  POSITION pos;
                  pos =m_pDoc2->GetFirstViewPosition();
                  CView* pView = m_pDoc2->GetNextView(pos);
                  pView->GetParentFrame()->ActivateFrame();
           }
           else
           {
                  CMISApp* pApp = (CMISApp*)AfxGetApp();
                  m_pDoc2 = (CNewDoc*)(pApp->m_pDocTemplate2->OpenDocumentFile(NULL));
     
           }
    复制代码

    至此就完成了整个工作,需要说明的是:

    1)  实现中由于使用到相关的类,因此在必要的地方要include相关的头文件,这里省略(编译有错误的时候添加就是了:));

    2)  这里给出的是一个示例代码,实际开发中可以通过参考实现获得自己想要实现的具体应用情况(例如视图类的不同、数量不同,更重要的还有业务逻辑的不同实现等);

    但是呢,到目前为止,程序有点bug,当点击功能1,再关闭,再打开,出现内存错误。这是由于功能1窗口关闭后,m_pDoc1并没有相应地置为NULL。解决方法就是在View类中添加OnDestroy消息响应:

    void CMISView::OnDestroy()
    {
      CView::OnDestroy(); 
    // TODO: Add your message handler code here
      ((CMainFrame*)AfxGetMainWnd())->m_pDoc1 = NULL;
    }

     

    选自:http://www.cnblogs.com/renyuan/archive/2012/12/26/2834024.html
    展开全文
  • (3)“视图”菜单:用于在对象、代码窗口之间的切换,显示与隐藏IDE构件等命令。 (4)“工程”菜单:用于对工程添加窗体、模块、引用其他Windows对象和工具框等命令。 (5)“格式”菜单:用于对窗体控件进行排版等...
  • VB皮肤控制使用实例 换肤资源文件,使用了一个皮肤控件实现的的漂亮窗口,同时还附带有20多款实用换肤皮肤资源,可适时在这20多种皮肤风格之间快速切换,其中包括有Windows XP风格、默认风格、渐变风格等多种风格...
  • VB如何触发焦点事件和失去焦点事件

    千次阅读 2017-04-23 22:34:22
    VB中有一个LostFocus事件和一个GotFocus事件,看名字似乎是当当前窗口失去焦点或得到焦点时触发事件。但在实际应用时却发现当这个窗口和Windows中其他窗口进行切换时并没有触发这两个事件。现在解析一下这两个事件...
    VB中有一个LostFocus事件和一个GotFocus事件,看名字似乎是当当前窗口失去焦点或得到焦点时触发的事件。但在实际应用时却发现当这个窗口和Windows中其他窗口进行切换时并没有触发这两个事件。现在解析一下这两个事件。 

    ---- Form_LostFocus、Form_GotFocus是指的是一个MDI主父窗体调用了多个子窗体,当这些子窗体之间切换时,就触发这两个事件;当一个窗体中的多个文本框,鼠标点击另一个文本框时,也会触发这两个此事件,文本框在 Windows内部实际上也是一个窗口。 

    ---- Windows内部是通过消息来触发事件的,这两个事件在Windows内部对应的消息是WM_NCACTIVATE,当该消息的wParam为0时表示是失去焦点,为非0时表示得到焦点。在模块中: 

    Public Declare Function SetWindowLong Lib 
    "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, 
    ByVal dwNewLong As Long) As Long 

    Public Declare Function DefWindowProc Lib 
    "user32" Alias "DefWindowProcA"_
    (ByVal hwnd As Long, ByVal wMsg As Long,
    ByVal wParam As Integer, ByVal_
    lParam As Long) As Long 

    Public Declare Function CallWindowProc Lib
    "user32" Alias "CallWindowProcA" _
    (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, 
    ByVal Msg As Long, ByVal _
    wParam As Long, ByVal lParam As Long) As Long 

    Public Const WM_NCACTIVATE = &H86 
    Public Const GWL_WNDPROC = (-4) 
    Public OldWndProc& 

    Public Function Hook&(ByVal hWnd1&) 
    OldWndProc = SetWindowLong(hWnd1,
    GWL_WNDPROC, AddressOf NewWndProc) 
    Hook = OldWndProc 
    End Function 

    Public Sub UnHook(ByVal hWnd1&) 
    SetWindowLong hWnd1, GWL_WNDPROC, OldWndProc 
    End Sub 

    Public Function NewWndProc&(ByVal hWnd1&, ByVal uMsg&,
    ByVal wParam&, ByVal lParam&) 
    If uMsg = WM_NCACTIVATE Then 
       If wParam = 0 Then ’失去焦点
          Form1.Caption = "失去焦点" 
           注释:在这里加入在失去焦点时想要执行的代码
       Else
                  Form1.Caption = "得到焦点"  
            ’在这里加入在得到焦点时想要执行的代码
       End If 
    End If 
    NewWndProc = CallWindowProc(OldWndProc, 
    hWnd1, uMsg, wParam, lParam) 
    End Function 

    窗口中代码如下: 

    Private Sub Form_Load() 
    Hook Form1.hwnd 
    End Sub 

    Private Sub Form_QueryUnload(Cancel As Integer,
    UnloadMode As Integer) 
    UnHook Form1.hwnd 
    End Sub 

    ---- 注意:在编写“失去焦点”和“得到焦点”的代码时,不要使用VB本身自带的函数,如: MsgBox()和Print()等,因为这里不支持,要用MessageBox()、TextOut()等API函数来代替,否则VB会出现“非法保护性错误”而把VB连带程序一起关掉。 

    展开全文
  • 本DataGridView打印控件和.NET打印控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以),有帮助文档与使用实例。 与上一版本5.5版...
  • 25、5.6版新增SimpleReport组件允许您在一个方案文件中管理多个打印方案,在打印预览时能自由在各个打印方案之间切换。 26、5.7版控件增加了使用开源NPOI从Excel文件中导入数据到DataGridView功能,以及...
  • 10、5.6版新增SimpleReport组件允许您在一个方案文件中管理多个打印方案,在打印预览时能自由在各个打印方案之间切换。 11、RichTextBox控件RTF文本打印功能。 12、页眉页脚中既可打印文字,也可打印图像,或者...
  • 过去曾看到过关于高级语言(如C#、VBVB.NET、Delphi等)控制WIndows系统主音量方法,调用了多个WIndows API,还有窗口查找操作,让很多初学者望而却步难懂其精髓; 其实在Windows 2000操作系统以后,一些品牌机...

    过去曾看到过关于高级语言(如C#、VB、VB.NET、Delphi等)控制WIndows系统主音量的方法,调用了多个WIndows API,还有窗口查找操作,让很多初学者望而却步难懂其精髓;

    其实在Windows 2000操作系统以后,一些品牌机都会提供一个功能强大的多媒体键盘,这些键盘中就包括有音量增大、音量减小、静音切换这三个多媒体扩展按键,这些键采用扩展的键码127~254之间。

    以下是这三个键盘的相应键码:

    VK_VOLUME_MUTE (0xAD)
    Windows 2000/XP: Volume Mute key   音量静音切换键

    VK_VOLUME_DOWN (0xAE)
    Windows 2000/XP: Volume Down key  音量递减键

    VK_VOLUME_UP (0xAF)
    Windows 2000/XP: Volume Up key 音量递增键

     

    通过WIndows API的键盘发送函数,我们可以简单而快速的实现音量控制,以下是代码:

    /*音量加*/

    keybd_event (0xAF, 0, 0, 0);
    keybd_event (0xAF, 0, KEYEVENTF_KEYUP, 0)

     

    /*音量减*/

    keybd_event (0xAE, 0, 0, 0);
    keybd_event (0xAE, 0, KEYEVENTF_KEYUP, 0)

     

    /*静音切换*/

    keybd_event (0xAD, 0, 0, 0);
    keybd_event (0xAD, 0, KEYEVENTF_KEYUP, 0)

    展开全文
  • 您可以用Object Selector很容易地在窗体各个部件之间切换,也可以快速地回到窗体本身。当窗体中含有较多对象时,您会发现这是切换对象尤其是回到窗体最快捷途径。  想使Object Inspector一直可见,可将鼠标移...
  • 2、使用了Tabbed(标签)窗口,在工作区顶部显示标签,打开多个图形窗口,只需要简单 点击标签就可切换不同窗口切换窗口操作更为方便。 3、提供图层功能(类似以前Overlay功能)(图1),可以在对象管理器中...
  • Ctrl F6:在多个打开文档窗口之间来回切换。Alt F6:在两个打开文档窗口之间反复切换。Ctrl Shift F6:切换至上一个Word文档窗口。 F7:实施拼写检查。Ctrl F7:当文档窗口不是最大化时,激活键盘上方向键,用...
  • 窗体失去焦点事件浅谈

    千次阅读 2011-02-18 02:51:00
    ---- VB中有一个LostFocus事件和一个GotFocus事件,看名字似乎是当当前窗口失去焦点或得到焦点时触发事件。但在实际应用时却发现当这个窗口和Windows中其他窗口进行切换时并没有触发这两个事件。现在解析一下这两...

    从网上搜索到的方法,不敢独享。

    ---- VB中有一个LostFocus事件和一个GotFocus事件,看名字似乎是当当前窗口失去焦点或得到焦点时触发的事件。但在实际应用时却发现当这个窗口和Windows中其他窗口进行切换时并没有触发这两个事件。现在解析一下这两个事件。

    ---- Form_LostFocus、Form_GotFocus是指的是一个MDI主父窗体调用了多个子窗体,当这些子窗体之间切换时,就触发这两个事件;当一个窗体中的多个文本框,鼠标点击另一个文本框时,也会触发这两个此事件,文本框在 Windows内部实际上也是一个窗口。

    ---- Windows内部是通过消息来触发事件的,这两个事件在Windows内部对应的消息是WM_NCACTIVATE,当该消息的wParam为0时表示是失去焦点,为非0时表示得到焦点。在模块中:

    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

    ublic Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

    ublic Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Public Const WM_NCACTIVATE = &H86
    Public Const GWL_WNDPROC = (-4)
    Public OldWndProc&

    Public Function Hook&(ByVal hWnd1&)
    OldWndProc = SetWindowLong(hWnd1, GWL_WNDPROC, AddressOf NewWndProc)
    Hook = OldWndProc
    End Function

    Public Sub UnHook(ByVal hWnd1&)
    SetWindowLong hWnd1, GWL_WNDPROC, OldWndProc
    End Sub

    Public Function NewWndProc&(ByVal hWnd1&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
    If uMsg = WM_NCACTIVATE Then
    If wParam = 0 Then '失去焦点
    Form1.Caption = "失去焦点"
    '在这里加入在失去焦点时想要执行的代码
    Else
    Form1.Caption = "得到焦点"
     '在这里加入在得到焦点时想要执行的代码
    End If
    End If
    NewWndProc = CallWindowProc(OldWndProc, hWnd1, uMsg, wParam, lParam)
    End Function

    窗口中代码如下:

    Private Sub Form_Load()
    Hook Form1.hwnd
    End Sub

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    UnHook Form1.hwnd
    End Sub

    ---- 注意:在编写“失去焦点”和“得到焦点”的代码时,不要使用VB本身自带的函数,如: MsgBox()和Print()等,因为这里不支持,要用MessageBox()、TextOut()等API函数来代替,否则VB会出现“非法保护性错误”而把VB连带程序一起关掉。
    ---- 本程序在VB6.0企业版中调试通过。

    展开全文
  • asp.net知识库

    2015-06-18 08:45:45
    实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...
  • UltraEdit编辑器

    2014-07-20 10:04:55
    -查找和替换 按下 shift 键后 允许选择插入符和查找目标之间的文本 可替换选定区域内的所有内容 -文件内查找 文件内替换 -转到行号 分页符 -显示器和打印机字体选择 (支持所有安装的字体 包括 TRUE TYPE 字体)...
  • -查找和替换——按下 shift 键后,允许选择插入符和查找目标之间的文本,可替换选定区域内的所有内容 -文件内查找,文件内替换 -转到行号/分页符 -显示器和打印机字体选择。(支持所有安装的字体,包括 TRUE-...
  • UE免安装绿色版

    2015-12-24 19:46:03
    -查找和替换——按下 shift 键后,允许选择插入符和查找目标之间的文本,可替换选定区域内的所有内容 -文件内查找,文件内替换 -转到行号/分页符 -显示器和打印机字体选择。(支持所有安装的字体,包括 TRUE-...
  • 本书不但是对从事Visual C++编程新手还是老手,以及其他编程语言,比如VB、Delphi程序员,都具有重要参考价值, “拿来就用”而且也可作为大专院极相关专业师生自学、教学参考书和社会相关领域培训班推荐...
  • -查找和替换——按下 shift 键后,允许选择插入符和查找目标之间的文本,可替换选定区域内的所有内容 -文件内查找,文件内替换 -转到行号/分页符 -显示器和打印机字体选择。(支持所有安装的字体,包括 TRUE-...
  • 14.3.1 以tab键切换控件顺序 554 14.3.2 所有控件属性 555 14.3.3 动态调整控件大小和布局 555 14.3.4 flowlayoutpanel控件 557 14.3.5 tablelayoutpanel控件 558 14.3.6 panel和groupbox容器控件 ...
  • Excel_VBA教程

    2014-09-22 11:36:34
    27 VB编辑器里其它窗口 46 28接下来…… 46 第二章 VBA 第一步 46 1了解指令,模块和过程 47 2 VBA工程命名 47 3模块重命名 48 4从其它工程调用过程 49 5了解对象,属性和方法 50 6学习对象,属性和方法 51 7句法...
  • arcgis工具

    2012-10-22 22:37:31
    的栅格polyClip4 之间的相乘运算 GIS软件应用-ArcGIS 得到的结果即是以任意多边形剪切的Landuse数据 18. 栅格重分类(Raster Reclassify) 通过栅格重分类操作可以将连续栅格数据转换为离散栅格数据 19. ...
  • 9.12 vblambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net体系结构 392 10.2 ado.net基本功能 393 10.2.1 ado.net常见任务 393 10.2.2 ado.net基本名称空间和类...
  •  静态编译后易语言EXE/DLL之间不能再共享譬如窗口窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中支持库,该支持库中数据或资源将不能再被其它EXE/DLL中所使用同名支持库访问。这是因为代码被分别...
  • surfer 9.11汉化版.part2

    热门讨论 2011-03-23 08:44:20
    2、使用了Tabbed(标签)窗口,在工作区顶部显示标签,打开多个图形窗口,只需要简单 点击标签就可切换不同窗口切换窗口操作更为方便。 3、提供图层功能(类似以前Overlay功能)(图1),可以在对象管理器中...
  • surfer9.11汉化.part3

    热门讨论 2011-03-23 08:47:20
    2、使用了Tabbed(标签)窗口,在工作区顶部显示标签,打开多个图形窗口,只需要简单 点击标签就可切换不同窗口切换窗口操作更为方便。 3、提供图层功能(类似以前Overlay功能)(图1),可以在对象管理器中...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

vb窗口之间的切换