天天看点

另类屏蔽系统键(Ctrl+Alt+Del)兼谈www.vbaccelerator.com网站

        学习技术最好的方式就是拜读优秀的源码,不仅让你学习到先进的技术,更教会你如何编码:编码的风格、注释、思路等等。这段时间我给我自己定了一个目标,就是研究优秀的源码:MenuHook、Skins、Form++等等。

 '*************************************************************************

'**函 数 名:Create

'**输    入:ByVal sDesktopName(String) -

'**输    出:无

'**功能描述:创建一个指定名称的左面

'**全局变量:

'**调用模块:

'**作    者:叶帆

'**日    期:2005-12-27 12:01:48

'**修 改 人:

'**日    期:

'**版    本:V1.0.3

'*************************************************************************

Public Sub Create(ByVal sDesktopName As String)

    Dim lR As Long

    '返回当前线程所在的桌面句柄

    m_hDesktopThreadOld = GetThreadDesktop(GetCurrentThreadId())

    '判断DLL调用是否有误

    ApiErrorHandler Err.LastDllError, (m_hDesktopThreadOld = 0)

    '当前选择的桌面

    m_hDesktopInputOld = OpenInputDesktop(0, False, DESKTOP_SWITCHDESKTOP)

    ApiErrorHandler Err.LastDllError, (m_hDesktopInputOld = 0)

    '创建桌面

    m_hDesktop = CreateDesktop(StrPtr(sDesktopName), ByVal 0&, ByVal 0&, 0, GENERIC_ALL, ByVal 0&)

    ApiErrorHandler Err.LastDllError, (m_hDesktop = 0)

    If Not (m_hDesktop = 0) Then

        lR = SetThreadDesktop(m_hDesktop)

        lR = SwitchDesktop(m_hDesktop)

        m_sDesktop = sDesktopName

    End If

End Sub

'**函 数 名:ClearUp

'**输    入:无

'**功能描述:

'**日    期:2005-12-27 13:00:27

Public Sub ClearUp()

    If Not (m_hDesktopInputOld = 0) Then

        SwitchDesktop m_hDesktopInputOld           '设置为默认的桌面

        m_hDesktopInputOld = 0

    If Not (m_hDesktopThreadOld = 0) Then

        SetThreadDesktop m_hDesktopThreadOld       '默认原桌面线程

        m_hDesktopThreadOld = 0

        CloseDesktop m_hDesktop                    '关闭新创建的桌面

        m_hDesktop = 0

==========================================

      仔细研究网站上面的源码,你发现几乎所有的源码都会引用一个SSubTmr6.dll组件,其实这个组件是VB开发的一个COM(进程内组件),实现的就是窗口的子类功能(此外包含一个API 创建的定时器)。

      此外用的最多的就是GUI库的API,大都是创建一个内存DC,在此基础上用API进行内存DC操作。由于我MFC大部分做的都是后台驱动,所以GUI的知识掌握不太多,所以看这部分就比较吃力,所以我觉的要想学习好windows编程,VC必须要学,因为它从底层向你展现程序实现的细节,你能理解并且可以设计出更高级的应用。

     谈点自己的感触:如果把VB仅仅当成一个工具,那是非常好的事,如果把它作为全部,那是最可悲的事。观摩高手的编码,无一不显示这个高手对底层精湛的了解。读读梁肇新的《编程高手箴言》也许你感悟更多。

继续阅读