Click here to Skip to main content
15,891,423 members
Home / Discussions / C#
   

C#

 
AnswerRe: Force Beep...! Pin
Richard MacCutchan25-Feb-13 3:09
mveRichard MacCutchan25-Feb-13 3:09 
AnswerRe: Force Beep...! Pin
Dave Kreskowiak25-Feb-13 3:56
mveDave Kreskowiak25-Feb-13 3:56 
AnswerRe: Force Beep...! Pin
PIEBALDconsult25-Feb-13 4:32
mvePIEBALDconsult25-Feb-13 4:32 
AnswerRe: Force Beep...! Pin
Eddy Vluggen25-Feb-13 8:04
professionalEddy Vluggen25-Feb-13 8:04 
AnswerRe: Force Beep...! Pin
Amir Mohammad Nasrollahi29-Jul-13 21:38
professionalAmir Mohammad Nasrollahi29-Jul-13 21:38 
QuestionASP.NET UserControl In UserControl Pin
thekoko8924-Feb-13 16:30
thekoko8924-Feb-13 16:30 
AnswerCrosspost Pin
SoMad24-Feb-13 16:47
professionalSoMad24-Feb-13 16:47 
QuestionThe .exe application file isn't obfuscated after installing setup ? Pin
taibc24-Feb-13 4:21
taibc24-Feb-13 4:21 
AnswerRe: The .exe application file isn't obfuscated after installing setup ? Pin
Pete O'Hanlon25-Feb-13 1:58
mvePete O'Hanlon25-Feb-13 1:58 
GeneralRe: The .exe application file isn't obfuscated after installing setup ? Pin
taibc25-Feb-13 3:12
taibc25-Feb-13 3:12 
GeneralRe: The .exe application file isn't obfuscated after installing setup ? Pin
Pete O'Hanlon25-Feb-13 4:43
mvePete O'Hanlon25-Feb-13 4:43 
GeneralRe: The .exe application file isn't obfuscated after installing setup ? Pin
taibc25-Feb-13 4:53
taibc25-Feb-13 4:53 
AnswerRe: The .exe application file isn't obfuscated after installing setup ? Pin
Samer AlRawi26-Feb-13 17:41
Samer AlRawi26-Feb-13 17:41 
GeneralRe: The .exe application file isn't obfuscated after installing setup ? Pin
taibc28-Feb-13 14:36
taibc28-Feb-13 14:36 
QuestionC# Pin
MohanKrishna.Kota24-Feb-13 4:06
MohanKrishna.Kota24-Feb-13 4:06 
AnswerASP.NET Pin
Jegan Thiyagesan25-Feb-13 12:14
Jegan Thiyagesan25-Feb-13 12:14 
General[TUTORIAL] Native Cocoa Apps with C# and MonoMac Pin
Jake Rieger23-Feb-13 14:36
Jake Rieger23-Feb-13 14:36 
GeneralRe: [TUTORIAL] Native Cocoa Apps with C# and MonoMac Pin
Dave Kreskowiak23-Feb-13 14:39
mveDave Kreskowiak23-Feb-13 14:39 
GeneralRe: [TUTORIAL] Native Cocoa Apps with C# and MonoMac Pin
Mycroft Holmes24-Feb-13 18:17
professionalMycroft Holmes24-Feb-13 18:17 
Questionprograme Pin
ongwere23-Feb-13 9:35
ongwere23-Feb-13 9:35 
AnswerRe: programe PinPopular
SoMad23-Feb-13 10:37
professionalSoMad23-Feb-13 10:37 
GeneralRe: programe Pin
Manfred Rudolf Bihy23-Feb-13 11:37
professionalManfred Rudolf Bihy23-Feb-13 11:37 
GeneralRe: programe Pin
SoMad23-Feb-13 11:46
professionalSoMad23-Feb-13 11:46 
AnswerRe: programe Pin
Amir Mohammad Nasrollahi29-Jul-13 21:45
professionalAmir Mohammad Nasrollahi29-Jul-13 21:45 
QuestionCustomize windows scroll bar in combobox Pin
Kaizen20223-Feb-13 7:45
Kaizen20223-Feb-13 7:45 
I am trying to customize default windows scrollbar in combobox like below.

C#
public partial class ComboEx : ComboBox
{
    internal ScrollbarEx vScrollBar;
    NativeListWindow listControl;
    public ComboEx()
    {
        InitializeComponent();
        DropDownHeight = 100;
        vScrollBar = new ScrollbarEx();
    }

    protected override void OnPaint(PaintEventArgs pe)
    {
        base.OnPaint(pe);
    }

    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        COMBOBOXINFO combInfo = new COMBOBOXINFO();
        combInfo.cbSize = Marshal.SizeOf(combInfo);
        Win32.GetComboBoxInfo( this.Handle, ref combInfo );

        listControl = new NativeListWindow(this, combInfo.hwndList);
    }

    protected override void WndProc(ref Message m)
    {
         if (m.Msg == (Win32.WM_REFLECT + Win32.WM_COMMAND))
        {
            if (Win32.HIWORD( (int)m.WParam ) == Win32.CBN_DROPDOWN)
            {
                COMBOBOXINFO combInfo = new COMBOBOXINFO();
                combInfo.cbSize = Marshal.SizeOf(combInfo);
                Win32.GetComboBoxInfo( this.Handle, ref combInfo );

                vScrollBar.Location = new Point( this.Width-23, 1 );
                vScrollBar.Size = new Size( 23, DropDownHeight );
                vScrollBar.Visible = true;
                Win32.SetParent(vScrollBar.Handle, combInfo.hwndList);
                Win32.ShowWindow(vScrollBar.Handle, ShowWindowCommands.Show);
                Win32.SetWindowPos(vScrollBar.Handle,HWND.TopMost, 155, 1, 23, 105, SetWindowPosFlags.SWP_SHOWWINDOW);
            }
        }
        base.WndProc(ref m);
    }

    // MyNativeWindow class to create a window given a class name.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
    internal class NativeListWindow : NativeWindow
    {
        // Constant values were found in the "windows.h" header file.
        private const int WS_CHILD = 0x40000000,
                          WS_VISIBLE = 0x10000000,
                          WM_ACTIVATEAPP = 0x001C;

        private int windowHandle;

        private ComboEx parent;

        public NativeListWindow(ComboEx owner,IntPtr handle)
        {
            AssignHandle(handle);
            parent = owner;

        }

        // Listen to when the handle changes to keep the variable in sync
        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
        protected override void OnHandleChange()
        {
            windowHandle = (int)this.Handle;
        }

        private void AdjustClientRect(ref RECT rect)
        {
            rect.right -= 23;
        }

        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
        protected override void WndProc(ref Message message)
        {
            // Listen for messages that are sent to the button window. Some messages are sent 
            // to the parent window instead of the button's window. 

            switch (message.Msg)
            {
                case Win32.NCCALCSIZE:
                    {
                        if (message.WParam != IntPtr.Zero)
                        {
                            NCCALCSIZE_PARAMS rcsize = (NCCALCSIZE_PARAMS)Marshal.PtrToStructure(message.LParam, typeof(NCCALCSIZE_PARAMS));
                            AdjustClientRect(ref rcsize.rect0);
                            Marshal.StructureToPtr(rcsize, message.LParam, false);
                        }
                        else
                        {
                            RECT rcsize = (RECT)Marshal.PtrToStructure(message.LParam, typeof(RECT));
                            AdjustClientRect(ref rcsize);
                            Marshal.StructureToPtr(rcsize, message.LParam, false);
                        }
                        message.Result = new IntPtr(1);
                        return;
                        break;
                    }

                    case Win32.WM_NCMOUSEMOVE:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                        break;
                    }
                    case Win32.WM_NCLBUTTONDOWN:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                    }
                    case Win32.WM_NCACTIVATE:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                    }
                    case Win32.WM_NCMOUSELEAVE:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                    }
                    case Win32.WM_NCLBUTTONUP:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                    }
                    case Win32.WM_NCHITTEST:
                    {
                        base.WndProc(ref message);
                        Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                        break;
                    }
                    case Win32.WM_MOUSEMOVE:
                    {
                        base.WndProc(ref message);
                        if ((int)message.LParam > 0)
                        {
                            int x = Win32.LOWORD((int)message.LParam);
                            int y = Win32.HIWORD((int)message.LParam);
                            RECT rect = new RECT(); ;
                            Win32.GetWindowRect(new HandleRef(parent.vScrollBar, parent.vScrollBar.Handle),out rect);
                            Rectangle rc = new Rectangle(parent.vScrollBar.Location.X, parent.vScrollBar.Location.Y,
                                (rect.right - rect.left), (rect.bottom - rect.top));
                            if (rc.Contains(new Point(x, y)))
                            {
                                Win32.SetFocus(parent.vScrollBar.Handle);
                                Win32.SetWindowPos(parent.vScrollBar.Handle, HWND.TopMost, 155, 1, 23, 105, SetWindowPosFlags.SWP_SHOWWINDOW);
                                Win32.SendMessage(parent.vScrollBar.Handle, (uint)message.Msg, message.WParam, message.LParam);
                            }
                        }
                        break;
                    }
            }
            base.WndProc(ref message);
        }
    }
}

In the above code, I did the following 1. created a NativeWindow to catch the messages of combobox listcontrol by assigning combInfo.hwndList handle. 2. Placed my custom scrollbar(ScrollBarEx) in the non-client area of combobox listcontrol.

But my custom scrollbar(ScrollBarEx) doesn't receives any messages or focus. It looks like it is dead. Please look into this code and share some idea to make the scrollbar live.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.