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.