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

📄 defproc.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
📖 第 1 页 / 共 5 页
字号:
			}
        }

        return TRUE;
    }    
    return FALSE;
}

// **************************************************
// 声明:
// 参数:
// 	无
// 返回值:
//	假入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	
// 引用: 
//	
// ************************************************

#define CAPSTATE  0x00000001
#define CAPDOWN   0x00000002

#define SHIFTDOWN 0x00000004 
#define TOUPPER( w ) (w-32)
BOOL WINAPI Msg_Translate( const MSG FAR * lpMsg )
{
    static WORD wKeyboardState=0;

   BOOL bDown ;
   if ( lpMsg->message == WM_KEYDOWN )
	   bDown = TRUE;
   else
	   bDown = FALSE;
    if( lpMsg->message == WM_KEYDOWN )
    {
		WPARAM wParam;
              
		wParam = lpMsg->wParam;
		{
			//extern void SetKeyState( WPARAM, BOOL );
		    SetKeyState( wParam ,bDown );
		}

		if( ( (DWORD)lpMsg->lParam & 0x80000000 ) == 0 )
		{
			wParam = MapVirtualKey( wParam, 2 );
			if( wParam != -1 )
			{
			    PostMessage( lpMsg->hwnd, WM_CHAR, wParam, 0 );
			}
			
		}
    }
	else if( lpMsg->message == WM_KEYUP )
	{
		SetKeyState(lpMsg->wParam ,bDown );
	}
    return FALSE;
}


/**************************************************
声明:static int DoScrollMove( HWND hWnd, LONG hitTest, int x, int y )
参数:
	IN hWnd - 窗口句柄
	IN hitTest - 选中的滚动条类型,为以下值:
		SC_HSCROLL - 水平滚动条
		SC_VSCROLL - 垂直滚动条
	IN x - 在滚动条的鼠标x位置(屏幕坐标)
	IN y - 在滚动条的鼠标y位置(屏幕坐标)
返回值:
	返回 0
功能描述:
	当鼠标在滚动条按下时,会调到该函数。该函数会调用
    滚动条处理函数Scrl_DoLBUTTONDOWN
引用: 
	内部使用
************************************************/

static int DoScrollMove( HWND hWnd, LONG hitTest, int x, int y )
{
    RECT rect;
    
    // 将hitTest转化为Scrl_DoLBUTTONDOWN能识别的值
    if( hitTest == SC_HSCROLL )
        hitTest = SB_HORZ;
    else
        hitTest = SB_VERT;
    // 将x,y转化为相对于窗口的坐标
    GetWindowRect( hWnd, &rect );
    x -= rect.left;
    y -= rect.top;
    //

    return (int)Scrl_DoLBUTTONDOWN( hWnd, (int)hitTest, x, y );
}


/**************************************************
声明:static int DoFrameMove( HWND hWnd, int x, int y )
参数:
	IN hWnd - 窗口句柄
	IN x - 在滚动条的鼠标x位置(屏幕坐标)
	IN y - 在滚动条的鼠标y位置(屏幕坐标)
返回值:
	返回0	
功能描述:
	处理WM_SYSCOMMAND - SC_MOVE消息
	实现窗口的移动
引用: 
	内部使用
************************************************/
	                        
static int DoFrameMove( HWND hWnd, int x, int y )
{
    HWND hParent;
    DWORD dwStyle;
    POINT pt;
    RECT rect;

    dwStyle = GetWindowLong( hWnd, GWL_STYLE );
    // 得到该窗口的窗口矩形(屏幕坐标)
    GetWindowRect( hWnd, &rect );
    if( dwStyle & WS_CHILD )
    {	//如果是子窗口,将该窗口矩形由屏幕坐标转化为其父窗口坐标
        hParent = GetParent( hWnd );
        ScreenToClient( hParent, (LPPOINT)&rect );
        ScreenToClient( hParent, ( (LPPOINT)&rect+1 ) );
    }
    else
        hParent = 0;

    pt.x = x;
    pt.y = y;
    // 这里进入鼠标拖动处理过程
    if( TrackWindowRect( hWnd, pt, hParent, &rect ) )
    {   // 鼠标释放(抬笔),将hWnd移到新的位置
        SetWindowPos( hWnd, 0, rect.left,  rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE );
        // 立即更新窗口内容
        UpdateWindow( hWnd );
    }
    return 0;
}


/**************************************************
声明:static BOOL GetInterFrame( LPRECT lprect, DWORD dwMainStyle )
参数:
	IN/OUT lprect - 输入窗口矩形坐标,并用该指针接收除边框之外的内矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	由窗口矩形得到除边框之外的内矩形
引用: 
************************************************/

static BOOL GetInterFrame( LPRECT lprect, DWORD dwMainStyle )
{
    SIZE size;
    //  得到除边框之外的内矩形的宽度和高度
    if( _GetFrameSize( &size, dwMainStyle ) )
    {   // 转换为屏幕坐标
        lprect->left += size.cx;
        lprect->top += size.cy;
        lprect->right -= size.cx;
        lprect->bottom -= size.cy;
    }
    else
        return FALSE;
    return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionSysBoxRect( LPRECT lprect, DWORD dwMainStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏上的
					系统方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏上的系统方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionSysBoxRect( LPRECT lprect, DWORD dwMainStyle )
{
	lprect->right = lprect->left + GetSystemMetrics( SM_CXSIZE );
	lprect->bottom = lprect->top + GetSystemMetrics( SM_CYSIZE );
    return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionTextBoxRect( LPRECT lprect, DWORD dwMainStyle, DWORD dwExStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏上的
					文本方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏上的文本方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionTextBoxRect( LPRECT lprect, DWORD dwMainStyle, DWORD dwExStyle )
{
	int cx = GetSystemMetrics( SM_CXSIZE );
	//如果有系统方框,去掉它
	if( dwMainStyle & WS_SYSMENU )
	    lprect->left += cx;
	//如果有关闭方框,去掉它
    if( dwExStyle & WS_EX_CLOSEBOX )
	{
		lprect->right -= cx;
	}
	//如果有确定方框,去掉它	
    if( dwExStyle & WS_EX_OKBOX )
	{
		lprect->right -= cx;
	}
	//如果有帮助方框,去掉它		
    if( dwExStyle & WS_EX_HELPBOX )
	{
		lprect->right -= cx;
	}
	return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionRect( LPRECT lprect, DWORD dwMainStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionRect( LPRECT lprect, DWORD dwMainStyle )
{
    SIZE size;

    _GetFrameSize( &size, dwMainStyle );
    lprect->left += size.cx;
    lprect->top += size.cy;
    lprect->right -= size.cx;
    lprect->bottom = lprect->top + GetSystemMetrics( SM_CYCAPTION );
	return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionHelpBoxRect( LPRECT lprect, DWORD dwExStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏的帮助方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏帮助方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionHelpBoxRect( LPRECT lprect, DWORD dwExStyle )
{
    lprect->bottom = lprect->top + GetSystemMetrics( SM_CYSIZE );
    if( dwExStyle & WS_EX_CLOSEBOX )
    {  // has close box
        lprect->right -= GetSystemMetrics( SM_CXSIZE );
    }
    if( dwExStyle & WS_EX_OKBOX )
        lprect->right -= GetSystemMetrics( SM_CXSIZE );

    lprect->left = lprect->right - GetSystemMetrics( SM_CXSIZE );
    return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionOkBoxRect( LPRECT lprect, DWORD dwExStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏的确定方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏确定方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionOkBoxRect( LPRECT lprect, DWORD dwExStyle )
{
    lprect->bottom = lprect->top + GetSystemMetrics( SM_CYSIZE );
    if( dwExStyle & WS_EX_CLOSEBOX )
    {  // has close box
        lprect->right -= GetSystemMetrics( SM_CXSIZE );
    }
    lprect->left = lprect->right - GetSystemMetrics( SM_CXSIZE );
    return TRUE;
}

/**************************************************
声明:static BOOL GetCaptionCloseBoxRect( LPRECT lprect, DWORD dwExStyle )
参数:
	IN/OUT lprect - 输入除边框之外的内矩形,并用该指针接收标题栏的关闭方框矩形坐标
	IN dwMainStyle - 窗口风格
返回值:
	假如成功,返回TRUE;否则,返回FALSE	
功能描述:
	得到标题栏关闭方框矩形坐标
引用: 
************************************************/

static BOOL GetCaptionCloseBoxRect( LPRECT lprect, DWORD dwExStyle )
{
    lprect->bottom = lprect->top + GetSystemMetrics( SM_CYSIZE );

    lprect->left = lprect->right - GetSystemMetrics( SM_CXSIZE );
    return TRUE;
}

/**************************************************
声明:static LRESULT DoPaint( HWND hWnd )
参数:
	IN hWnd - 窗口句柄
返回值:
	假如成功,返回0;
功能描述:
	处理WM_PAINT消息
引用: 
************************************************/

static LRESULT DoPaint( HWND hWnd )
{
    PAINTSTRUCT ps;

    BeginPaint( hWnd, &ps );
    EndPaint( hWnd, &ps );
    return 0;
}

/**************************************************
声明:static LRESULT DoErasebkgnd( HWND hWnd, HDC hdc )
参数:
	IN hWnd - 窗口句柄
	IN hdc - 绘图DC
返回值:
	假如擦出了背景,返回1;否则返回0
功能描述:
	处理WM_ERASEBACKGROUND消息
引用: 
************************************************/

static LRESULT DoErasebkgnd( HWND hWnd, HDC hdc )
{
    HBRUSH hBrush = (HBRUSH)GetClassLong( hWnd, GCL_HBRBACKGROUND );
    RECT rect;
    if( hBrush )
    {
        GetClientRect( hWnd, &rect );
        FillRect( hdc, &rect, hBrush );
        return (LRESULT)1;
    }
    return (LRESULT)0;
}

/**************************************************
声明:static LRESULT DoErasebkgnd( HWND hWnd )
参数:
	IN hWnd - 窗口句柄
返回值:
	返回0
功能描述:
	处理WM_DESTROY消息
引用: 
************************************************/

static LRESULT DoDestroy( HWND hWnd )
{
    return 0;
}

static LRESULT DoNcDestroy( HWND hWnd )
{
	DWORD dwStyle = (DWORD)GetWindowLong( hWnd, GWL_STYLE );//GetWindowLong( hWnd, GWL_VSCROLL );
	LPSTR lpWinText = (LPSTR)SetWindowLong( hWnd, GWL_TEXT_PTR, 0 );
	if( dwStyle & WS_VSCROLL )
	{
		_ReleaseWindowScrollBar( hWnd, SB_VERT );
	}
	if( dwStyle & WS_HSCROLL )
	{
		_ReleaseWindowScrollBar( hWnd, SB_HORZ );
	}
	if( lpWinText )
	{
//		RETAILMSG( 1, ( "free window text(%x).\r\n", lpWinText ) );
		FreeStr( lpWinText );
	}

    return 0;
}

static LRESULT DoNcCreate( HWND hWnd, LPARAM lParam )

⌨️ 快捷键说明

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