我想用Win32 API写个类似于“考研倒计时”的桌面小程序,但是以往写的Win32应用程序都是带窗口框架的,不知道这种桌面小程序是怎么制作的,请有经验的大虾指点指点,不胜感激。

解决方案 »

  1.   

    新建工程->选择WIN32 Project
      

  2.   

    什么叫桌面小程序啊?只在桌面上显示的?
    如果在桌面上显示那么你可以写一个隐藏的窗口,然后用::GetDC(NULL)取得桌面DC,然后输出就行了。
      

  3.   


    呃差不多是这样的,就是Windows默认的窗口框架不好看,我想自己定义的好看一点的
      

  4.   


    以前写程序都是直接采用Windows默认的风格,其他的就不是很清楚了,所以还是要请教
      

  5.   

    以下代码如何:是这样吗
    #include <windows.h>
    #include "resource.h"LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
     
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
    {  WNDCLASS wndclass;
    wndclass.lpszClassName="Win32"; // window class name
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName=NULL;
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
    wndclass.hInstance=hInstance;
    wndclass.lpfnWndProc=WndProc;
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    RegisterClass(&wndclass); HWND hWnd = CreateWindowEx( WS_EX_TOPMOST,
    "Win32","Demo",
    WS_POPUP|WS_BORDER,
    225,160,100,100,NULL,NULL,hInstance,NULL) ; if (!hWnd) return FALSE;    
    ShowWindow(hWnd,SW_SHOWNORMAL);
    UpdateWindow(hWnd); MSG msg;
    while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg);DispatchMessage(&msg);} return msg.wParam ;
    }LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
    switch(message)
    {
    case WM_CREATE:
    break;
    case WM_LBUTTONDOWN:
    break;
    case WM_RBUTTONDOWN:
    ::PostMessage(hWnd,WM_CLOSE,NULL,NULL);
    break;
    case WM_CLOSE:
    DestroyWindow(hWnd); //既关闭按钮,可以在此时询问用户是否确定要关闭,再调用DestroyWindow关闭程序
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd,message,wParam,lParam);
    }
    return 0;
    }