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

📄 uiwm_queue.h

📁 嵌入工linux开发的源码
💻 H
字号:
/******************************************************************************
 FILE: wm_queue.h (/rtos/kernel/usrlib/gui_win/include/)

 Window Message Module

 Copyright (c) 2001, III Technology Research Division

 AUTHOR: BlackDog <ealin@iii.org.tw>

 HISTORY:

*******************************************************************************
*/

#ifndef _UIWM_QUEUE_H
#define _UIWM_QUEUE_H

#include <pr2k.h>
#include <typedefine.h>
#include <uiGui_Cfg.h>

#include <uiMessage.h>
#include <kernel/thread.h>

/*********************************************
	MESSAGE DATA STRUCTURE
*********************************************/

typedef struct tagGuiMessage
{
	WORD messageType;
	short x, y;
	BYTE button;
	HNDL handle;
	HNDL elseInfo ;
}TGuiMessage;


typedef struct tagGuiMessageQueue
{
	/* message queue所占的空间*/
	TGuiMessage * mQueue;

	/* 指到mesage queue头, 尾的index*/
	/* initial value must be 0*/
	WORD mqFront;
	WORD mqRear;

	struct thread * ownerThread ;
	short suspendFlag ;	// 0 : not suspended, 1 : suspended
	short nMaxMessageNo;
}TGuiMessageQueue;


/*********************************************
	FUNCTION DECLARATION
*********************************************/

/*
Functions below are MultiThread & MultiWindows Safe!!
*/


/* return NULL if something error !!*/
DLL_EXP(TGuiMessageQueue *) guiAllocateMessageQueue(void);

//return -1 if pQueue is null;
DLL_EXP(STATUS) guiReleaseMessageQueue(TGuiMessageQueue *pQueue);

/* return -1 if this message queue is full*/
DLL_EXP(STATUS) guiEnqueue(TGuiMessageQueue* queue,TGuiMessage* message);

/* return -1 if this message is empty*/
DLL_EXP(STATUS) guiDequeue(TGuiMessageQueue* queue,TGuiMessage* message);

/* return -1 if this message is empty*/
DLL_EXP(STATUS) guiDequeue2(TGuiMessageQueue* queue,TGuiMessage* message);

/* return -1 if this message is empty*/
DLL_EXP(STATUS) guiPequeue(TGuiMessageQueue *queue, TGuiMessage *message);
/*
    Internal-used Functions
*/

STATUS _guiEnqueue( TGuiMessageQueue* queue, TGuiMessage* message );

//
// clear the message queue(give up all messages in this queue)
//
DLL_EXP(void) guiEmptyQueue(TGuiMessageQueue* queue) ;

void _guiEmptyQueue(TGuiMessageQueue* queue) ;
void guiBroadcasting(TGuiMessage* message) ;


#endif

⌨️ 快捷键说明

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