/// <summary>
        /// アイコンのオーバーレイを表示します。
        /// </summary>
        /// <param name="self">アイコンオーバーレイを表示させたい<see cref="System.Windows.Forms.TreeNode"/></param>
        /// <param name="overlayIndex">オーバーレイインデックス(開始値 1)</param>
        public static void Overlay(this TreeNode self, int overlayIndex)
        {
            if (self == null)
                throw new ArgumentNullException("self is null.");

            // TreeView_SetItemState(node.TreeView.Handle, node.Handle,
            //     overlayIndex << 8, TVIS_OVERLAYMASK); 相当の処理

            TVITEM tvi = new TVITEM();
            tvi.mask = NativeMethods.TVIF_STATE;
            tvi.hItem = self.Handle;
            tvi.stateMask = NativeMethods.TVIS_OVERLAYMASK;
            tvi.state = ((uint)overlayIndex << 8);

            NativeMethods.SendMessage(self.TreeView.Handle,
                NativeMethods.TVM_SETITEMW, 0, ref tvi);
        }
 public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, ref TVITEM lParam);