==== MouOpen ==== **Bindings**: [[open#C bindings|C]], [[open#MASM bindings|MASM]] This call opens the mouse device for the current session. //MouOpen// (**DriverName, DeviceHandle**) //DriverName// (**PSZ**) - input //DriverName// is a far pointer to an **ASCIIZ** string in application storage containing the name of the pointer draw device driver to be used as the pointer-image drawing routine for this session. The name of the device driver must be included in the **CONFIG.SYS** file at system start-up time. Applications that use the default pointer draw device driver supplied by the system must push a double-word of 0s in place of an address. //DriverName// has a different definition when the caller is the Base Video Subsystem (**BVS**). In this case the selector portion of the far address is zero. The offset portion is non-zero and contains a display configuration number (sequentially numbered where 1 is the first display configuration). The [[open|MouOpen]] call issued by **BVS** is executed on the [[en:ibm:prcp:vio:setmode|VioSetMode]] path. Using the display configuration number passed on the [[open|MouOpen]] call, the Base Mouse Subsystem can detect a change in display configurations. This form of the MouOpen call is not recommended for applications. Applications should either push the far address of an **ASCIIZ** pointer draw device driver name or push two words of zeros. //DeviceHandle// (**PHMOU**) - output Address of a 1-word value that represents the mouse handle returned to the application. //rc// (**USHORT**) - return Return code descriptions are: |0 |NO_ERROR | |385 |ERROR_MOUSE_NO_DEVICE | |390 |ERROR_MOUSE_INV_MODULE_PT | |466 |ERROR_MOU_DETACHED | |501 |ERROR_MOUSE_NO_CONSOLE | |505 |ERROR_MOU_EXTENDED_SG | **Remarks** [[open|MouOpen]] initializes the Mouse functions to a known state. The application may have to issue additional mouse functions to establish the environment it desires. For example, after the [[open|MouOpen]], the collision area is defined to be the size of the entire display. Therefore, to get the pointer to be displayed, the application must issue a [[drawptr|MouDrawPtr]] to remove the collision area. The state of the mouse after the first [[open|MouOpen]] is: * Row/Col scale factors set to 16/8. (See [[setscalefact|MouSetScaleFact]].) * All events reported. (See [[seteventmask|MouSetEventMask]].) * Empty event queue. (See [[readeentque|MouReadEventQue]] and [[getnumqueel|MouGetNumQueEl]].) * All user settable Device Status bits reset. (Set to zero. See [[setdevstatus|MouSetDevStatus]].) * Pointer set to center of screen if valid display mode is set. (See [[setptrpos|MouSetPtrPos]].) * Pointer shape set to the default for the pointer device driver currently registered in the session. (See [[setptrshape|MouSetPtrShape]].) * Collision area equal to full screen. (See [[drawptr|MouDrawPtr]] and [[removeptr|MouRemovePtr]].) === C bindings === #define INCL_MOU USHORT rc = MouOpen(DriverName, DeviceHandle); PSZ DriverName; /* Pointer draw driver name */ PHMOU DeviceHandle; /* Mouse device handle */ USHORT rc; /* return code */ === MASM bindings === EXTRN MouOpen:FAR INCL_MOU EQU 1 PUSH@ ASCIIZ DriverName ;Pointer draw driver name PUSH@ WORD DeviceHandle ;Mouse device handle CALL MouOpen Returns WORD