⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wnduserrng.c

📁 文件驱动加密,功能强大,可产生加密分区,支持AES,MD2,MD4,MD5MD2, MD4, MD5, RIPEMD-128, RIPEMD-160, SHA-1, SHA-224, SHA-256,
💻 C
📖 第 1 页 / 共 2 页
字号:
            // the cursor
            if ( 
                (WindowData->LinesListTail != WindowData->LinesListHead) &&
                (WindowData->LinesListTail != NULL)
               ) 
                {
                _wndUserRNG_DrawLine(
                                     hWnd,
                                     R2_MERGENOTPEN,
                                     WindowData->LinesListTail->Point,
                                     WindowData->LinesListTail->Next->Point
                                    );
                RemoveLastPoint(WindowData);
                }

            }
        else
            {
            // AT THIS POINT, WE USE LastMouseX AND LastMouseY AS THE CO-ORDS TO USE

            // Store the position
            StoreNewPoint(WindowData, WindowData->LastPnt);

            // User moved cursor - don't delete any more lines unless the max number
            // of lines which may be displayed is exceeded
            if ( 
                ((WindowData->PointCount+1) > WindowData->TrailLines) &&
                (WindowData->PointCount > 1)
               ) 
                {
                _wndUserRNG_DrawLine(
                                     hWnd,
                                     R2_MERGENOTPEN,
                                     WindowData->LinesListTail->Point,
                                     WindowData->LinesListTail->Next->Point
                                    );
                RemoveLastPoint(WindowData);
                }


            // Draw newest line
            if (
                (WindowData->TrailLines > 0) &&
                (WindowData->PointCount > 1)
               )
                {
                _wndUserRNG_DrawLine(
                                     hWnd,
                                     R2_COPYPEN,
                                     WindowData->LinesListHead->Prev->Point,
                                     WindowData->LinesListHead->Point
                                    );
                }


            ProcessSample(hWnd, WindowData->LastPnt);
            }

        }

}


// =========================================================================
LRESULT CALLBACK wndUserRNG_HandleMsg_WM_ENABLE(HWND hWnd, WPARAM wParam)
{
    BOOL enabled = (BOOL)wParam;
    USERRNG_DATA* WindowData;

    WindowData = wndUserRNG_GetWindowData(hWnd);

    if (enabled)
        {
        WindowData->TimeOfLastSample = 0;
        }

    // Redraw to get enabled/disabled background
    RedrawWindow(
                 hWnd, 
                 NULL, 
                 NULL, 
                 (RDW_ERASE | RDW_INVALIDATE)
                );

    return 0;  // Processed WM_ENABLE successfully
}


// =========================================================================
LRESULT CALLBACK wndUserRNG_HandleMsg_WM_ERASEBKGND(HWND hWnd, WPARAM wParam)
{
    LRESULT retval = 0; // Zero indicates failure
    HDC hDC;
    RECT rect;
    HBRUSH hBrush;
    
    hDC = (HDC)wParam;

    if (IsWindowEnabled(hWnd))
        {
        hBrush = GetSysColorBrush(COLOR_WINDOW);
        }
    else
        {
        hBrush = GetSysColorBrush(COLOR_BTNFACE);
        }

    if (GetClientRect(hWnd, &rect))
        {
        FillRect(hDC, &rect, hBrush);
        retval = 1;  // Nonzero means we processed the message
        }

    return retval;
}


// =========================================================================
LRESULT CALLBACK wndUserRNG_HandleMsg_WM_CLOSE(HWND hWnd)
{
    DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("wndUserRNG_HandleMsg_WM_CLOSE\n")));

    //xxx - is this called?
    DestroyWindow(hWnd);

    DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("wndUserRNG_HandleMsg_WM_CLOSE\n")));
    return 0;
}


// =========================================================================
LRESULT CALLBACK wndUserRNG_HandleMsg_WM_DESTROY(HWND hWnd)
{
    USERRNG_DATA* WindowData;

    DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("wndUserRNG_HandleMsg_WM_DESTROY\n")));

    WindowData = wndUserRNG_GetWindowData(hWnd);
    SecZeroAndFreeMemory(WindowData, sizeof(*WindowData));
    WindowData = NULL;
    wndUserRNG_SetWindowData(hWnd, WindowData);

    DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("wndUserRNG_HandleMsg_WM_DESTROY\n")));
    return 0;
}


// =========================================================================
void wndUserRNG_SetWindowData(HWND hWnd, USERRNG_DATA* WindowData)
{
    SetWindowLong(hWnd, 0, (LONG)WindowData);
}


// =========================================================================
USERRNG_DATA* wndUserRNG_GetWindowData(HWND hWnd)
{
    return (USERRNG_DATA*)GetWindowLong(hWnd, 0);
}


// =========================================================================
void _wndUserRNG_DrawLine(
    HWND hWnd,
    int Mode,
    POINT A,
    POINT B
)
{
    USERRNG_DATA* WindowData;
    HPEN hPen;
    HDC hDC;
    POINT pts[POINTS_TO_A_LINE];

    WindowData = wndUserRNG_GetWindowData(hWnd);

    hDC = GetDC(hWnd);

    hPen = CreatePen( 
                     PS_SOLID, 
                     WindowData->LineWidth, 
                     WindowData->LineColor
                    );

    SelectObject(hDC, hPen);
    SetROP2(hDC, Mode);

    pts[0] = A;
    pts[1] = B;
    Polyline(hDC, pts, POINTS_TO_A_LINE);

    DeleteObject(hPen);

}


// =========================================================================
void wndUserRNG_HandleMsg_WM_MOUSEMOVE(
                             HWND hWnd,
                             LPARAM lParam
                            )
{
    USERRNG_DATA* WindowData;
    DWORD sampleInterval;
    DWORD currTime;

    if (IsWindowEnabled(hWnd))
        {
        WindowData = wndUserRNG_GetWindowData(hWnd);

        if (
            (WindowData->TrailLines > 0) &&
            (WindowData->PointCount >= 1)
           )
            {
            _wndUserRNG_DrawLine(
                                 hWnd,
                                 R2_XORPEN,
                                 WindowData->LinesListHead->Point,
                                 WindowData->LastPnt
                                );
            }

        WindowData->LastPnt.x = LOWORD(lParam);
        WindowData->LastPnt.y = HIWORD(lParam);

        if (
            (WindowData->TrailLines > 0) &&
            (WindowData->PointCount >= 1)
           )
            {
            _wndUserRNG_DrawLine(
                                 hWnd,
                                 R2_XORPEN,
                                 WindowData->LinesListHead->Point,
                                 WindowData->LastPnt
                                );
            }

        // Prevent potential problems with tick count looping back to 0
        currTime = GetTickCount();
        if (WindowData->TimeOfLastSample > currTime)
            {
            sampleInterval = WindowData->TimeOfLastSample - currTime;
            }
        else
            {
            sampleInterval = currTime - WindowData->TimeOfLastSample;
            }

        if (sampleInterval > USERRNG_TIMER_INTERVAL)
            {
            _wndUserRNG_TakeSampleIfMoved(hWnd);
            WindowData->TimeOfLastSample = GetTickCount();
            }
        }

}


// =========================================================================
LRESULT CALLBACK wndUserRNG_Proc(
                             HWND hWnd,
                             UINT msg,
                             WPARAM wParam,
                             LPARAM lParam
                            )
{
    LRESULT retval = 0;
    // xxx - junk this - static SHACTIVATEINFO s_sai = {0};

    switch(msg)
        {
        case WM_CREATE:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_CREATE\n")));
            // xxx - junk this -  s_sai.cbSize = sizeof(SHACTIVATEINFO);
            retval = wndUserRNG_HandleMsg_WM_CREATE(hWnd, lParam);
            break;
            }

        case WM_ENABLE:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_ENABLE\n")));
            wndUserRNG_HandleMsg_WM_ENABLE(hWnd, wParam);
            break;
            }

        case WM_ERASEBKGND:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_ERASEBKGND\n")));
            retval = wndUserRNG_HandleMsg_WM_ERASEBKGND(hWnd, wParam);
            break;
            }

        case WM_ACTIVATE:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_ACTIVATE\n")));
            // xxx - junk this - SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, 0);
            break;
            }

        case WM_SETTINGCHANGE:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_SETTINGCHANGE\n")));
            // xxx - junk this - SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
            break;
            }

        case WM_CLOSE:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_CLOSE\n")));
            retval = wndUserRNG_HandleMsg_WM_CLOSE(hWnd);
            break;
            }

        case WM_DESTROY:
            {
            DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_DESTROY\n")));
            retval = wndUserRNG_HandleMsg_WM_DESTROY(hWnd);
            break;
            }
            
        case WM_MOUSEMOVE:
            {
            wndUserRNG_HandleMsg_WM_MOUSEMOVE(hWnd, lParam);
            break;
            }

        default:
            {
            retval = DefWindowProc(hWnd, msg, wParam, lParam);
            }

        }  // switch(msg)

    return retval;
}


// =========================================================================
BOOL WndUserRNGRegister()
{
    WNDCLASS wc;

    DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("WndMainRegister\n")));

    InitCommonControls();

    wc.style         = (CS_HREDRAW | CS_VREDRAW) ;
    wc.lpfnWndProc   = (WNDPROC)wndUserRNG_Proc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = sizeof(PUSERRNG_DATA);
    wc.hIcon         = NULL;
    wc.hInstance     = G_hInstance;
    wc.hCursor       = NULL; // No cursor for WinCE
    // wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);    
    //wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
    wc.hbrBackground = NULL;  // We use WM_ERASEBKGND
    wc.lpszMenuName  = NULL; // Must be set to NULL; WinCE doesn't support
                             // "MAKEINTRESOURCE(IDR_MAINMENU)" here
    wc.lpszClassName = USERRNG_CONTROL;

    DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("WndMainRegister\n")));
    return (RegisterClass(&wc) != 0);
}


// =========================================================================
// =========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -