用getdc(0);取得桌面句柄,就可以对桌面进行操作啦.
其它如上.
不知道利用windows外壳编程技术是不是有其它解决方法,关注.

解决方案 »

  1.   

    2 prefix(MtSC) :
    用getdc(0)可以取得桌面设备句柄,就可以绘按钮了啊,怎么要用GetDesktopWindow() 呢?
    请指教小弟一二 ^_^
      

  2.   

    0就是桌面的窗口句柄
    可以用CreateWindow来创建按钮
      

  3.   

    windows的桌面是由哪个程序画的?
    能不能自己写一个覆盖了它····?
      

  4.   

    其实只要用GetDC函数取得窗口设备描述表句柄就好了呀!但是最后好象要ReleaseDC释放该设备描述表句柄!
      

  5.   

    就当DESKTOPWINDOW是父窗口,然后Create一个按钮就行
      

  6.   

    SORRY,没看到你只用API,那你就在上面CreateWindow一个子窗口,然后在里面画你的按纽,当然也就可以在其中捕捉你想要的消息
      

  7.   

    2 :111222(天下第一菜!)
    windows的桌面其实是explorer程序。
    你在win.ini(好象吧?)里把“shell=explorer”改成“shell=yourapplication”就可以有自己的桌面啦~
      

  8.   

    0是屏幕,似乎和Desktop不同。试一下就知道了。
      

  9.   

    最简单的方法是:建立一个html文件,在里面加上按钮,然后打开active desktop,把它设置为墙纸
      

  10.   

    听说shell 提供了一批api及DDE参数来进行编程,好象很方便的样子,不过可能不能加按钮吧,不过做个快捷方式还可以。至于做个button....难道就不能做个永远居于最下面的窗体吗?我觉得getwindow(0)==getdesktopwindow....至少在windows系列是这样的吧
      

  11.   

    windows.setparent(Button1.handle,0);
    注意不是画的不可Refersh.
      

  12.   

    OH
    我用的是Delphi
    http://Lovejingtao.126.com
      

  13.   

    用Active desktop实现简单,
    写一个HTML做背景
      

  14.   

    Explorer 桌面实际有两层窗口,可以通过子类化的方法相应该按钮的事件。可以参考Win3.X的《Window核心程序设计>
      

  15.   

    HWND __fastcall TMainForm::GetDeskWnd()
    {
      //TODO: Add your source code here
       HWND     hWnd;    hWnd = GetDesktopWindow(); 
       if ((hWnd = FindWindowEx(hWnd, 0, "Progman", "Program Manager")) == 0) 
          return NULL;    if ((hWnd = FindWindowEx(hWnd, 0, "SHELLDLL_DefView", NULL)) == 0) 
          return NULL; //   if ((hWnd = FindWindowEx(hWnd, 0, "SysListView32", NULL)) == 0)
    //      return NULL; 
       return hWnd;}这段程序可以得到桌面的句柄,自动绕过所有窗口。
      

  16.   

    把这些去掉
    __fastcall TMainForm::
      

  17.   

    光在桌面上画有什么用?还要响应消息啊,用钩子可以实现。
    你不如创建一个基于对话框的程序,在对话框上放一个按钮,把对话框设置成NONE,大小与按钮一样。这样不就OK了吗?
      

  18.   

    HackerII我感觉你的方法最好····简单极了(LIAO)
      

  19.   

    我用lovejingtao的方法试过了,可以。但是一旦按钮到达了桌面上,就不能相应消息了。
      

  20.   

    能不能通过GetActiveWindow()获取当前被激活的窗口的句柄,然后,在当前活动的窗口上绘制按钮呢?
      

  21.   

    最简单的方法,利用Active Desktop功能,写一个网页,放到桌面上。
      

  22.   

    总结一下,上面讨论了大约有三种实现方法
    1。做一个ACTIVEX 控件,嵌入到一个HTML页面里,然后将这个页面做为背景;
    2。做一个窗体,含有一个按钮,永远处于最第层;
    3。子类化桌面(其实也是一个窗体),替换掉窗口过程,自己画按钮、消息循环。
    三种都可以实现,看你的需要及能力了,我以前试过,抱歉现在没有源码也不想再做。