创建不在任务条中显示窗口按钮的应用程序

主要的思路就是 将我们的窗口的父窗口设置为一个隐藏的窗口  代码如下:

 

  1. #include <windows.h>
  2. LRESULT CALLBACK WndProc (HWNDUINTWPARAMLPARAM) ;
  3. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  4.                     PSTR szCmdLine, int iCmdShow)
  5. {
  6.     static TCHAR szAppName[] = TEXT ("NoShowInTaskBar") ;
  7.     HWND     hwndHide, hwndMain ;
  8.     MSG      msg ;
  9.     WNDCLASS wndclass ;
  10.     BOOL     bRet ;
  11.     wndclass.style          = CS_HREDRAW | CS_VREDRAW ;
  12.     wndclass.lpfnWndProc    = WndProc ;
  13.     wndclass.cbClsExtra     = 0 ;
  14.     wndclass.cbWndExtra     = 0 ;
  15.     wndclass.hInstance      = hInstance ;
  16.     wndclass.hIcon          = LoadIcon (NULL, IDI_APPLICATION) ;
  17.     wndclass.hCursor        = LoadCursor (NULL, IDC_ARROW) ;
  18.     wndclass.hbrBackground  = (HBRUSH) GetStockObject (GRAY_BRUSH) ;
  19.     wndclass.lpszMenuName   = NULL ;
  20.     wndclass.lpszClassName  = szAppName ;
  21.     if(!RegisterClass (&wndclass))
  22.     {
  23.         MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ;
  24.         return 0;
  25.     }
  26.     hwndHide = CreateWindow (szAppName, TEXT ("不在任务条中显示窗口按钮"),
  27.                          WS_OVERLAPPEDWINDOW,
  28.                          CW_USEDEFAULT, CW_USEDEFAULT,
  29.                          CW_USEDEFAULT, CW_USEDEFAULT,
  30.                          NULL, NULL, hInstance, NULL) ;
  31.     
  32.     ShowWindow (hwndHide, SW_HIDE) ;  //将窗口隐藏
  33.     hwndMain = CreateWindow (szAppName, TEXT ("不在任务条中显示窗口按钮"),
  34.                          WS_OVERLAPPEDWINDOW,
  35.                          CW_USEDEFAULT, CW_USEDEFAULT,
  36.                          320, 240,
  37.                          hwndHide, NULL, hInstance, NULL) ; //父窗口为上面创建的窗口
  38.     ShowWindow (hwndMain, iCmdShow) ;
  39.     UpdateWindow (hwndMain) ;
  40.     while ( (bRet = GetMessage (&msg, NULL, 0, 0) ) != 0 )
  41.     {
  42.         if (bRet == -1)
  43.         {
  44.             MessageBox (hwndMain, TEXT ("Such code can lead to fatal application errors"),
  45.                         szAppName, MB_ICONERROR) ;
  46.             return -1 ;
  47.         }
  48.         else
  49.         {
  50.             TranslateMessage (&msg) ;
  51.             DispatchMessage (&msg) ;
  52.         }
  53.     }
  54.     return msg.wParam ;
  55. }
  56. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  57. {
  58.     HDC         hdc ;
  59.     PAINTSTRUCT ps ;
  60.     RECT        rect ;
  61.     switch (message)
  62.     {
  63.         case WM_PAINT:
  64.             hdc = BeginPaint (hwnd, &ps) ;
  65.             GetClientRect (hwnd, &rect) ;
  66.             SetBkMode(hdc, TRANSPARENT) ;
  67.             DrawText (hdc, TEXT ("不在任务条中显示窗口按钮"), -1, &rect,
  68.                       DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
  69.             EndPaint (hwnd, &ps) ;
  70.             return 0 ;
  71.         case WM_DESTROY:
  72.             PostQuitMessage (0) ;
  73.             return 0 ;
  74.     }
  75.     return DefWindowProc (hwnd, message, wParam, lParam) ;
  76. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值