我想在vc程序中实现显示桌面,有什么办法吗,就像摁Windows+d一样

我想在vc程序中实现显示桌面,有什么办法吗,就像摁Windows+d一样,第1张

用系统API函数 GetDesktopWindow 获取桌面窗口的句柄,然后show出来

HWND hDeskTop = ::GetDesktopWindow();

::ShowWindow(hDeskTop, SW_SHOW);

就拿打印程序为例,微软将打印页面看成是一个GDI绘图表面,通过win32平台调用,可以获取打印机的GDI表面,你在上面绘制图形和使用GDI是一模一样的。扫描仪没有统一的标准,他的驱动一般由设备厂商提供,当然也有微软的通用驱动,如果你希望控制扫描,唯一的方式是与扫描仪的驱动程序交付,这就要阅读相关的文档了。作为新手,最好不要去碰驱动程序,运行在内核里的程序一旦出问题,哪怕是访问越界,立马蓝屏。

有关这些不需要界面的模块,你需要理解windows的动态连接库(dll)机制,他是30年来windows系统的基石,一些基础的windows服务一般在不同的dll中,你需要通过dll导出接口(函数)或类型访问这些功能。当然,这年头,这些服务可能一开机就已经运行了,你需要通过访问windows服务的方法使用他们。具体情况不是几句话能说清楚的。

至于各种main函数其实是历史遗留问题,但是简单的说,main是控制台程序的入口,WinMain是windows程序的入口。当windows发展到今天,这个两个入口其实都差不多,无论你从那个入口进入都能得到相同的程序配置与运行效果。只不过main会默认打开一个黑窗口(如果你运行黑窗口d出的话)。MFC 也是通过winmain进入的,只不过他的winmain是隐藏在基类框架中的,你看不见而已。

最后,你要实现的功能,用任何一个入口都可以。因为在windows平台上,不管你用控制台还是win32或者是mfc,你能调用的系统服务都是一样的。

一、显示和隐藏任务栏

要想对任务栏进行 *** 作,首先当然需要获得任务栏的句柄,所以首先利用FindWindow获取句柄,再 *** 作

示例代码:

1、隐藏任务栏

HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);

ShowWindow(hWnd,SW_HIDE);

2、显示任务栏

HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);

ShowWindow(hWnd,SW_SHOW);

二、自动隐藏任务栏和取消自动隐藏任务栏(隐藏于自动隐藏不同)

需要利用一API函数:SHAppBarMessage

UINT_PTR SHAppBarMessage(

DWORD dwMessage,

PAPPBARDATA pData

以上就是关于我想在vc程序中实现显示桌面,有什么办法吗,就像摁Windows+d一样全部的内容,包括:我想在vc程序中实现显示桌面,有什么办法吗,就像摁Windows+d一样、VC++ 如何调用扫描仪驱动来获取图像信息、vc获取任务栏显示的软件是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10641200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存