Jump to content

WinCreateMsgQueue: Difference between revisions

From EDM2
mNo edit summary
Line 10: Line 10:
==Returns==
==Returns==
; HMQ hmq : Handle to the newly created message queue. NULLHANDLE is returned if there was an error. WinGetLastError will return one of:
; HMQ hmq : Handle to the newly created message queue. NULLHANDLE is returned if there was an error. WinGetLastError will return one of:
0x100A PMERR_RESOURCE_NOT_FOUND
;0x100A PMERR_RESOURCE_NOT_FOUND
0x1011 PMERR_HEAP_OUT_OF_MEMORY
:The specified resource identity could not be found.
0x1012 PMERR_HEAP_MAX_SIZE_REACHED
;0x1011 PMERR_HEAP_OUT_OF_MEMORY
0x1018 PMERR_QUEUE_TOO_LARGE
:An attempt to increase the size of the heap failed.
0x1051 PMERR_NOT_IN_A_PM_SESSION
;0x1012 PMERR_HEAP_MAX_SIZE_REACHED
0x1052 PMERR_MSG_QUEUE_ALREADY_EXISTS
::The heap has reached its maximum size (64KB), and cannot be increased.
;0x1018 PMERR_QUEUE_TOO_LARGE
:An attempt to create a message queue has failed because the value specified for the size of the message queue is too large.
;0x1051 PMERR_NOT_IN_A_PM_SESSION
::An attempt was made to access function that is only available from PM programs from a non-PM session.
;0x1052 PMERR_MSG_QUEUE_ALREADY_EXISTS
:An attempt to create a message queue for a thread failed because a message queue already exists for the calling thread.


==Define (C/C++)==
==Define (C/C++)==

Revision as of 22:23, 14 May 2023

After calling WinInitialize, you must call this function if your thread needs to respond to messages. Save the handle, as other functions need it as input.

Syntax

WinCreateMsgQueue( hab, maxMsg ) : Creates a message queue.

Parameters

HAB hab (input)
Anchor block of calling thread (from WinInitialize or WinQueryAnchorBlock).
LONG maxMsg (input)
The number of messages the queue can hold. Pass 0 for system default.

Returns

HMQ hmq
Handle to the newly created message queue. NULLHANDLE is returned if there was an error. WinGetLastError will return one of:
0x100A PMERR_RESOURCE_NOT_FOUND
The specified resource identity could not be found.
0x1011 PMERR_HEAP_OUT_OF_MEMORY
An attempt to increase the size of the heap failed.
0x1012 PMERR_HEAP_MAX_SIZE_REACHED
The heap has reached its maximum size (64KB), and cannot be increased.
0x1018 PMERR_QUEUE_TOO_LARGE
An attempt to create a message queue has failed because the value specified for the size of the message queue is too large.
0x1051 PMERR_NOT_IN_A_PM_SESSION
An attempt was made to access function that is only available from PM programs from a non-PM session.
0x1052 PMERR_MSG_QUEUE_ALREADY_EXISTS
An attempt to create a message queue for a thread failed because a message queue already exists for the calling thread.

Define (C/C++)

#define INCL_WINMESSAGEMGR
#include <os2.h>

Example Code

#define INCL_WINMESSAGEMGR 
#include <os2.h> 

HAB hab; 
ULONG flOptions = 0L; 
HMQ hmq; 

hab=WinInitialize(flOptions); 
hmq=WinCreateMsgQueue(hab, 0L); 

if (hmq) {
          : 
         }

Related Functions

  • WinDestroyMsgQueue
  • WinPostMessage
  • WinSendMessage