Candidate Part Class

The instance of the default Candidate Part Class is an object window which creates of Candidate List window(actually visible window) as follows.

This candidate list window can be dragged by mouse drag button( usually right mouse button).
WM_IMEREQUEST
IMR_CANDIDATE_SHOW

Candidate window shows the candidate list window according to the information in IMInstance. Usually, the top-left corner of the candidate window is placed at the position which is specified in IMInstance, but if the candidate list window exceeds the desk top window boundary, it is adjusted. If the title string length is 0 in CandidateList structure, the default title string which is appropriate for the candidate style(CLS_*) is displayed.

IMR_CANDIDATE_HIDE

Candidate List window is hidden when the candidate window receives this message.

IMR_CANDIDATE_CHANGE

Candidate List window is redrawn with the new contents in IMInstance.

IMR_CANDIDATE_CANDIDATEPOS

If the candidate list index is unchanged, Candidate list window is just re-positioned, else the same effect with IMR_CANDIDATE_CHANGE takes place.

IMR_CANDIDATE_SELECT

Candidate list window hilites the newly selected candidate and stops hilite state of currently selected candidate.

IMR_OTHERINFO_HWND

The owner window of the candidate list window is changed.
WM_QUERY/SETWINDOWPARAMS

Defatul candidate class supports the following control data for WM_QUERY/SETWINDOWPARAMS when WPM_CTLDATA is specified.

typedef struct _CANDCTLDATA { /* candctldata */
    USHORT  usSize;
    ULONG   ulCtlFlag;
    PFNMOUNOTIFY pfnMouseNotify;
} CANDCTLDATA;

where

   usSize : Size of CANDCTLDATA structure.

   ulCtlFlag : flag which shows the data to query/set.
               Currently only CCD_MOUSENOTIFYENTRY is available.

   pfnMouseNotify : Entry point address of Mouse event notification.
   If this parameter is set to 0, mouse event notification is canceled.
   The mouse notification entry must conform to the following prototype.

VOID EXPENTRY MouseNotify( HIMI himi, ULONG ulMsg, ULONG ulCandIndex )

where

   himi : himi whose candidate list get the mouse event

   ulMsg : same as PM's mouse msg which is one of the following:

   WM_MOUSEMOVE
   WM_BUTTON1DOWN
   WM_BUTTON1UP
   WM_BUTTON1DBLCLK
   WM_BUTTON2DOWN
   WM_BUTTON2UP
   WM_BUTTON2DBLCLK
   WM_BUTTON3DOWN
   WM_BUTTON3UP
   WM_BUTTON3DBLCLK
   WM_MOUSEMAP
   WM_CHORD
   WM_BUTTON1MOTIONSTART
   WM_BUTTON1MOTIONEND
   WM_BUTTON1CLICK
   WM_BUTTON2MOTIONSTART
   WM_BUTTON2MOTIONEND
   WM_BUTTON2CLICK
   WM_BUTTON3MOTIONSTART
   WM_BUTTON3MOTIONEND
   WM_BUTTON3CLICK

   ulCandIndex : Candidate item index where the mouse event happened.
   The following 2 special value index are passed when the message is
   WM_MOUSEMOVE and the mouse pointer is outside the candidate list box.

   CI_PREVPAGE(0xfffffffe) : When the mouse pointer is placed above the top
                            item in the list which is currently visible.

   CI_NEXTPAGE(0xffffffff) : When the mouse pointer is placed below the bottom
                            item in the list which is currently visible.


[Back: Status Part Class]
[Next: Information Message Part Class]