|
楼主 |
发表于 2012-9-22 18:24:10
|
显示全部楼层
- #include <windows.h>
- LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
-     switch(uMsg)
-     {
-     }
-     //调用缺省消息处理过程
-     //窗口处理消息中,系统提供一个默认消息处理函数
-     //做没有写出来的消息交给这个函数处理
-     return DefWindowProc(hwnd, uMsg, wParam, lParam);
- }
- #define App_width 800
- #define App_height 600
- int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
- {
-     // 信息提示框
-     /*MessageBox(
-         NULL,       // 默认的窗口句柄
-         "窗口程序", // 信息框的内容
-         "提示信息", // 信息的标题
-         MB_YESNO);*/
-     // 创建窗口的过程:
-     // 1.创建窗口类,需要赋值
-     WNDCLASS wc;
-     wc.hInstance     = hInst;                                // 设置当前进程句柄
-     wc.lpszClassName = TEXT("2nDs_Desktop_Widget");            // 注册名字
-     wc.lpfnWndProc     = WinProc;                                // 设置当前窗口的信息处理函数
-     wc.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;// 窗口类的风格
-     wc.hIcon         = NULL;                                // 光标的设置
-     wc.hCursor         = LoadCursor(NULL, IDC_ARROW);            // 设置箭头光标
-     wc.lpszMenuName  = NULL;                                // 设置菜单(无菜单)
-     wc.cbClsExtra    = 0;                                    // 类的扩展字节数
-     wc.cbWndExtra    = 0;                                    // 窗口的扩展字节数
-     wc.hbrBackground = HBRUSH(GetStockObject(BLACK_BRUSH));    // 窗口背景的颜色
-     
-     // 2.注册窗口类
-     if(!RegisterClass(&wc)) // 取地址
-     {
-         MessageBox( NULL, TEXT("注册窗口类出错!"), TEXT("RegisterClass"), MB_OK) ;
-         return NULL;
-     }
-     // 3.创建窗口,定义窗口句柄
-     //窗口模式
-     HWND hWnd = CreateWindow(TEXT("2nDs_Desktop_Widget"),
-         TEXT("2nDs_Desktop_Widget"),
-         WS_POPUP | WS_SYSMENU | WS_VISIBLE,
-         CW_USEDEFAULT,
-         CW_USEDEFAULT,
-         CW_USEDEFAULT,
-         CW_USEDEFAULT,
-         NULL,
-         NULL,
-         hInst,
-         NULL);
-     if(hWnd == NULL)
-     {
-         MessageBox( NULL, TEXT("创建窗口出错!"), TEXT("CreateWindow"), MB_OK);
-         return NULL;
-     }
-     // 获取系统屏幕大小
-     int    Win_W = GetSystemMetrics(SM_CXSCREEN);
-     int Win_H = GetSystemMetrics(SM_CYSCREEN);
-     // 求出窗口居于屏幕中央时的左上角位置
-     int x1 = (Win_W - App_width) / 2;
-     int y1 = (Win_H - App_height) / 2 - 32;
-     // 根据上面的值,调整窗口的位置
-     SetWindowPos(hWnd, HWND_NOTOPMOST,
-         x1, y1, App_width, App_height,
-         SWP_HIDEWINDOW);
-     // 获取客户区的相对于屏幕左上角的位置
-     RECT rectWin;
-     GetClientRect(hWnd, &rectWin);
-     ClientToScreen(hWnd, (LPPOINT)&rectWin);
-     ClientToScreen(hWnd, (LPPOINT)&rectWin + 1);
-     // 4.显示窗口
-     ShowWindow(hWnd, SW_NORMAL); // 显示模式
-     // 窗口半透明
-     SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);
-     SetLayeredWindowAttributes(hWnd,0,(255*70)/150,LWA_ALPHA);
-     // 5.更新窗口
-     UpdateWindow(hWnd);
-     
-     //6.消息循环
-     MSG  msg;    msg.message = WM_NULL;//存储消息结构体
-     //1.消息类型 : 1)命令消息 按钮
-     //               2)非命令消息 键盘、鼠标消息
-     //2.消息的附加消息:存储消息中的相关不同信息值
-     // typedef struct tagMSG {
-     //HWND hwnd;
-     //UINT message;
-     //WPARAM wParam; //消息的附加消息
-     //LPARAM lParam; //消息的附加消息
-     //DWORD time; //符号长整型 当前时间
-     //POINT pt; } //存储点的,鼠标的位置
-     //MSG;
-     //1.第二个参数是窗口句柄,如果传hWnd,说明要过滤消息
-     // 如果传NULL,说明处理所有的消息,后面两个参数为0
-     // 有消息就处理,没有消息就等待。
-     while(msg.message != WM_QUIT)
-     {
-         //if( GetMessage(&msg,NULL,0,0) )
-         if (PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
-         {
-             //解析消息
-             TranslateMessage(&msg);
-             //分派消息
-             DispatchMessage(&msg);
-         }
-     }
-     //7.注销窗口类
-     UnregisterClass(TEXT("2nDs_Desktop_Widget"),  // 窗口类名字
-                     hInst); // 进程句柄
-     return (int)msg.wParam;
- }
复制代码
半透明桌面,没有标题栏。不出现任务栏还是不会弄T_T
还有 Alt+Tab和ALT+CTRL+DELETE都看不到这个程序,进程能看到怎么整哇?
就是整个程序就是迅雷的浮动窗口那样,或者是360显示流量的浮动窗口那样 |
|