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

📄 win32term.h

📁 DOS下采用中断接收数据的串口通讯的例子,很难找到的好东西!
💻 H
字号:
//
//  WIN32TERM.H
//
//  Source code from:
//
//  Serial Communications: A C++ Developer's Guide, 2nd Edition
//  by Mark Nelson, M&T Books, 1999
//
//  Please see the book for information on usage.
//
// This header file contains the declarations for
// class Win32Term. This class creates a window that
// can be used as part of a Win32 terminal emulator. 
//

#include <windows.h>
#include <vector>
using namespace std;

//
// The vector<vector<> > variables in this class
// end up with incredibly long expanded names. This
// pragma disables the associated warnings
//
#pragma warning( disable : 4786 )


class Win32Term 
{
public :
    //
    // This nested class is used to hold the background
    // and foreground colors for a single character
    // on the screen. Packaging the two together into
    // a class makes a few things a little easier in
    // some of the members.
    //
    struct TextColor 
    {
        TextColor( COLORREF f = 0, COLORREF b = 0 )
            :   m_Foreground( f ),
			    m_Background( b ) {}
        bool operator!=( const TextColor &that )
        {
            if ( m_Foreground != that.m_Foreground )
                return true;
            return m_Background != that.m_Background;
        }
        COLORREF m_Foreground;
        COLORREF m_Background;
    };
    //
    // This little class is used in a bunch of different
    // places in the class where we hold both an x and a
    // y value for something, like size, scrolling range,
    // offset, etc. It's another convenience class, mostly
    // here for clarity.
    //
    struct Pair 
    {
        Pair( int i = 0, int j = 0 ) 
        {
            x = i;
            y = j;
        }
        int x;
        int y;
    };
    //
    // This is the structure that we have to use to 
    // pass data to the WinProc on a WM_CREATE
    //
    struct CreateData { 
        SHORT size;
        Win32Term *pTerm;
    };
    Win32Term( HWND hParent,
               const char *window_name,
               int rows, 
               int cols );
    virtual ~Win32Term()
    {
        if ( m_hWnd )
            SetWindowLong( m_hWnd, 0, 0 );
        if ( m_hFont )
            DeleteObject( m_hFont );
    }
	void SetForegroundColor( COLORREF color )
    {
        m_CurrentColor.m_Foreground = color;
    }
	void SetBackgroundColor( COLORREF color )
    {
        m_CurrentColor.m_Background = color;
    }
	COLORREF GetForegroundColor()
    {
        return m_CurrentColor.m_Foreground;
    }
	COLORREF GetBackgroundColor()
    {
        return m_CurrentColor.m_Background;
    }
	COLORREF GetBorderColor()
    {
        return m_BorderColor;
    }
    LOGFONT GetLogFont()
    {
        return m_lfFont;
    }
    void SetBorderColor( COLORREF color );
    virtual void Clear();
    void Output( char c );
    void Output( const char *pBuf,  int length = -1 );
    void SetFont( LOGFONT LogFont );
    int SetCursorPosition( int row, int col );
    void GetCursorPosition( int &row, int &col );

protected :
    BOOL Paint();
    void UpdateCursor();
    void SetFocus();
    void KillFocus();
    void VerticalScroll( WPARAM wParam );
    void HorizontalScroll( WPARAM wParam );
    void Size( int x, int y );
    virtual LRESULT Dispatch( HWND hwnd, 
                              UINT uMsg, 
                              WPARAM wParam, 
                              LPARAM lParam ); 
public :
    HWND                        m_hWnd;

protected:
    HWND                        m_hParent;
    TextColor                   m_CurrentColor;
    vector< vector<char> >      m_ScreenText;
    vector< vector<TextColor> > m_ScreenColor;
    bool                        m_bWrap;
    bool                        m_bShowingCursor;
    HFONT                       m_hFont;
    LOGFONT                     m_lfFont;
    Pair                        m_VisibleSize;
	const Pair					m_VirtualSize;
    Pair                        m_ScrollRange;
    Pair                        m_Offset;
    Pair                        m_Position;
    Pair                        m_CharSize;
	int                         m_iCharDescent;
    COLORREF                    m_BorderColor;

protected:
    static bool                 m_bClassRegistered;

protected:    
    static LRESULT CALLBACK WindowProc( HWND hwnd, 
                                        UINT uMsg, 
                                        WPARAM wParam, 
                                        LPARAM lParam ); 
 
};

//EOF Win32Term.h

⌨️ 快捷键说明

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