Mesoscopic Programming

タコさんプログラミング専門

Programming Tips #8 マウスカーソル設定方法のかん違い

場所によってマウスカーソルを一時的に変更するには

てっきり WM_MOUSEMOVE で SetCursor() すれば良いと思ってたのだが間違いだった。
どうもカーソルがちらちらするので何か変だなと思って調査したら分かった。
本命は WM_SETCURSOR だった。

LRESULT App :: OnWmSetCursor()
{
    RECT  rc;
    POINT pt;

    if ( IsWindowVisible( hTreeView ) )
    {
        GetWindowRect( hTreeView, & rc );
        GetCursorPos( & pt );

        if ( abs( pt.x - rc.right ) <= cursorOffset )
        {
            SetCursor( LoadCursor( NULL, IDC_SIZEWE ) );

            return TRUE;
        }
    }

    return DefaultProc();
}
解説

上はカーソルがツリービューの右端を指したらカーソル形状を変更する処理です。*1

以上。

*1: 終了処理を修正しました