首页
社区
课程
招聘
[旧帖] [原创]新手写给自己看的程序 0.00雪花
发表于: 2012-10-24 21:30 1454

[旧帖] [原创]新手写给自己看的程序 0.00雪花

2012-10-24 21:30
1454
#include <WINDOWS.H>
void GetInfo (int *, int *) ;

LRESULT CALLBACK WndProc(HWND , UINT, WPARAM, LPARAM) ;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
        static TCHAR Name[] = TEXT("What Color") ;
        HWND hWnd ;
        int  cxClient, cyClient ;
        MSG        msg ;
        WNDCLASS wndclass ;

        wndclass.cbClsExtra = 0 ;
        wndclass.cbWndExtra = 0 ;
        wndclass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH) ) ;
        wndclass.hCursor = LoadCursor(NULL, IDC_ARROW) ;
        wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION) ;
        wndclass.hInstance = hInstance ;
        wndclass.lpfnWndProc = WndProc ;
        wndclass.lpszClassName = Name ;
        wndclass.lpszMenuName =NULL  ;
        wndclass.style = CS_VREDRAW || CS_HREDRAW ;

        if (!RegisterClass (&wndclass))
        {
                MessageBox (NULL, TEXT ("ERROE"),
                        Name, MB_ICONERROR) ;
                return 0 ;
        }

        GetInfo(&cxClient, &cyClient) ;
        hWnd = CreateWindow(Name, TEXT("Color"), WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_BORDER,
                        CW_USEDEFAULT, CW_USEDEFAULT,
                        cxClient, cyClient, NULL, NULL,
                        hInstance, NULL) ;

        ShowWindow(hWnd, nShowCmd) ;
        UpdateWindow(hWnd) ;

        while(GetMessage(&msg, NULL, 0, 0))
        {
                TranslateMessage(&msg) ;
                DispatchMessage(&msg) ;
        }

        return msg.wParam ;
       
}       
void GetInfo(int * pcxClient, int * pcyClient)
        {
                HDC hdc ;
                TEXTMETRIC tm ;
                hdc = CreateIC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
                GetTextMetrics (hdc, &tm) ;
        DeleteDC (hdc) ;
// 建立对话框宽度,高度
                *pcxClient = GetSystemMetrics(SM_CXBORDER) +
                                        12 * tm.tmAveCharWidth ;
                *pcyClient = GetSystemMetrics(SM_CYBORDER) +
                                        2 * tm.tmHeight + GetSystemMetrics(SM_CYCAPTION) ;

        }

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wparam, LPARAM lparam)
{
        static COLORREF cr , cr2 ;
        static HDC hdc        ;
        HDC hdc1 ;
        RECT re ;
        POINT pt ;
        static PAINTSTRUCT ps ;
        TCHAR szBuffer[16] ;
        switch(message)
        {
        case WM_CREATE :
                hdc = CreateDC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
                SetTimer (hWnd, 1, 100, NULL) ;

                return 0 ;
        case WM_TIMER :
                GetCursorPos(&pt) ;
                cr = GetPixel(hdc, pt.x, pt.y) ;
               
                //获取的颜色改变则重画窗口
                if(cr != cr2)
                {
                        cr2  =  cr ;
                        InvalidateRect(hWnd, NULL, FALSE) ;
                }
               
                return 0 ;

        case WM_PAINT :
                hdc1 = BeginPaint (hWnd, &ps) ;

                GetClientRect(hWnd, &re) ;
               
                wsprintf(szBuffer, TEXT(" %02X  %02X  %02X "), GetRValue(cr), GetGValue(cr), GetBValue(cr) ) ;
               
                DrawText(hdc1, szBuffer, -1, &re,
                                DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
                EndPaint(hWnd, &ps) ;

                return 0 ;
        case WM_DISPLAYCHANGE:
                DeleteDC (hdc) ;
                hdc = CreateDC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
          return 0 ;
                  
                  
        case WM_DESTROY :
                DeleteDC (hdc) ;
                KillTimer (hWnd, 1) ;
                PostQuitMessage (0) ;
                return 0 ;
               
        }
       
        return DefWindowProc(hWnd, message, wparam, lparam) ;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 446
活跃值: (186)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
看出来啥意思了,就是获取当前鼠标所在的像素呗
2012-10-24 22:02
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主你写了多久?
2012-10-25 01:27
0
雪    币: 224
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
老师说代码要有注释才是好代码。当然#include我也懂。
2012-10-25 02:02
0
游客
登录 | 注册 方可回帖
返回
//