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

📄 controls.h

📁 声卡的数据分析,用于采集声卡的数据进行分析
💻 H
字号:
#if !defined controls_h
#define controls_h
//------------------------------------
//  controls.h
//  Window Controls
//  (c) Bartosz Milewski, 1996
//------------------------------------

#include "wassert.h"
#include <windows.h>
#include <strstrea.h>

typedef LRESULT (CALLBACK *PWinProc)(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );

const int MAX_POS = 32;

class MenuBar
{
public:
    MenuBar (HWND hwnd)
        : _hwnd (hwnd), _hMenu (GetMenu (hwnd))
    {}
    void Enable (int id)
    {
        EnableMenuItem (_hMenu, id, MF_BYCOMMAND | MF_ENABLED);
    }
    void Disable (int id)
    {
        EnableMenuItem (_hMenu, id, MF_BYCOMMAND | MF_GRAYED);
    }
    void Refresh ()
    {
        DrawMenuBar(_hwnd);
    }

private:
    HWND    _hwnd;
    HMENU   _hMenu;
};


    // This is for controls embedded
    // in regular dialog boxes that have
    // a dialog procedure. They can be constructed
    // in response to WM_INITDIALOG message

class SimpleControl
{
public:
    SimpleControl (HWND hwndParent, int id)
        : _hWnd (GetDlgItem (hwndParent, id))
    {}

    void SetFocus ()
    {
        ::SetFocus (_hWnd);
    }

    HWND Hwnd () const { return _hWnd; }

protected:
    HWND _hWnd;
};

class Combo: public SimpleControl
{
public:
    Combo (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id),
          _cPos (0) 
    {}

    void AddValue (int val)
    {
        char buf[6];
        wsprintf ( buf, "%d", val );
        AddString ( buf );
        _aVal [_cPos] = val;
        _cPos++;
        Assert (_cPos < MAX_POS);
    }

    void SelectPos (int i)
    {
        SendMessage (Hwnd (), CB_SETCURSEL, i, 0);
    }

    // code is the HIWORD (wParam)
    static bool IsChanged (int code) 
    { 
        return code == CBN_SELENDOK;
    }

    int GetValue ()
    {
        return _aVal [GetIndex()];
    }

private:

    void AddString (char* str)
    {
        SendMessage (Hwnd (), CB_ADDSTRING, 0, (LPARAM) str);
    }

    int GetIndex()
    {
        return SendMessage (Hwnd (), CB_GETCURSEL, 0, 0);
    }

    int _aVal [MAX_POS];
    int _cPos;
};

class EditReadOnly: public SimpleControl
{
public:
    EditReadOnly (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id)
    {}

    void SetString (char const * buf)
    {
        SendMessage (Hwnd (), WM_SETTEXT, 0, (LPARAM) buf);
    }

    void SetNumber (int n)
    {
        char buf[6];
        wsprintf (buf, "%d", n);
        SetString (buf);
    }

    void SetHexNumber (int n)
    {
        char buf[6];
        wsprintf (buf, "%x", n);
        SetString (buf);
    }

    void SetDouble (double x)
    {
        char buf [10];
        ostrstream str( buf, 10);
        str << x << ends;
        SetString (buf);
    }
};

class Edit: public SimpleControl
{
public:
    Edit (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id)
    {}

    void SetString (char* buf)
    {
        SendMessage (Hwnd (), WM_SETTEXT, 0, (LPARAM) buf);
    }

    // code is the HIWORD (wParam)
    static bool IsChanged (int code)
    { 
        return code == EN_CHANGE;
    }

    int GetLen ()
    {
        return SendMessage (Hwnd (), WM_GETTEXTLENGTH, 0, 0);
    }

    void GetString (char* buf, int len)
    {
        SendMessage (Hwnd (), WM_GETTEXT, (WPARAM) len, (LPARAM) buf);
    }

    void Select ()
    {
        SendMessage (Hwnd (), EM_SETSEL, 0, -1);
    }
};

class SubEdit: public Edit
{
public:
    SubEdit (HWND hwndParent, int id);

    static LRESULT CallDefault (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
    {
        // Gives compile error if not compiled with STRICT!
        return CallWindowProc (This (hWnd)->_wprocOld, hWnd, message, wParam, lParam);
    }

    static SubEdit* This (HWND hwnd)
    {
        return (SubEdit*) GetWindowLong (hwnd, GWL_USERDATA);
    }

private:
    PWinProc _wprocOld;
};

class RadioButton: public SimpleControl
{
public:
    RadioButton (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id)
    {}

    // code is the HIWORD (wParam)
    static bool IsClicked (int code)
    {
        return code == BN_CLICKED;
    }
    void Check()
    {
        SendMessage (Hwnd (), BM_SETCHECK, (WPARAM)1, 0);
    }
    void UnCheck()
    {
        SendMessage (Hwnd (), BM_SETCHECK, 0, 0);
    }
    void Disable()
    {
        EnableWindow (Hwnd (), FALSE);
    }
};

class Button: public SimpleControl
{
public:
    Button (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id)
    {}

    void Push ()
    {
        SendMessage (Hwnd (), BM_SETSTATE, (WPARAM)1, 0);
    }

    void Pop ()
    {
        SendMessage (Hwnd (), BM_SETSTATE, 0, 0);
    }
};

class ScrollBar: public SimpleControl
{
public:
    ScrollBar (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id), _iPos(0), _cPos(0) 
    {}

    void Init (int range, int cPage)
    {
        _cPos = range;
        _cPage = cPage;  // page increment
        SetRange (range);
    }

    // Usage: Command (LOWORD (wParam), HIWORD (wParam));
    void Command (int code, int pos);

    int GetPos ()
    {
        return GetScrollPos (_hWnd, SB_CTL);
    }

    void SetPos (int i)
    {
        _iPos = i;
        SetScrollPos (_hWnd, SB_CTL, i, TRUE);
    }

protected:

    void SetRange (int range)
    {
        SetScrollRange (_hWnd, SB_CTL, 0, range - 1, FALSE);
    }

    int     _iPos;
    int     _cPos;
    int     _cPage;
};

class ScrollBarMap: public ScrollBar
{
public:
    ScrollBarMap (HWND hwndParent, int id)
        : ScrollBar (hwndParent, id)
    {}
    void AddValue (int val)
    {
        Assert (_cPos < MAX_POS);
        _aVal [_cPos] = val;
        _cPos++;
    }

    void Init (int range, int cPage)
    {
        Assert (range == _cPos);
        ScrollBar::Init (range, cPage);
    }
    void Clear () 
    { 
        _cPos = 0; 
        _iPos = 0; 
    }
    int  GetValue () const { return _aVal [_iPos]; }
protected:
    int _aVal [MAX_POS];
};

#endif

⌨️ 快捷键说明

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