当前位置: 代码迷 >> VB Dotnet >> 请大家帮忙看看,多谢
  详细解决方案

请大家帮忙看看,多谢

热度:177   发布时间:2016-04-25 02:22:18.0
请大家帮忙看看,谢谢
把这段C#代码变成VB.NET代码,应该怎么搞,谢谢
        [DllImport("user32.dll")]
        private static extern IntPtr GetWindowDC(IntPtr hWnd);
        [DllImport("user32.dll")]
        private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

        private const int WM_NCPAINT = 0x0085;
        private const int WM_NCACTIVATE = 0x0086;
        private const int WM_NCLBUTTONDOWN = 0x00A1;
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            Rectangle vRectangle = new Rectangle((Width - 75) / 2, 3, 75, 25);
            switch (m.Msg)
            {
                case WM_NCPAINT:
                case WM_NCACTIVATE:
                    IntPtr vHandle = GetWindowDC(m.HWnd);
                    Graphics vGraphics = Graphics.FromHdc(vHandle);
                    vGraphics.FillRectangle(new LinearGradientBrush(vRectangle,
                        Color.Pink, Color.Purple, LinearGradientMode.BackwardDiagonal),
                        vRectangle);

                    StringFormat vStringFormat = new StringFormat();
                    vStringFormat.Alignment = StringAlignment.Center;
                    vStringFormat.LineAlignment = StringAlignment.Center;
                    vGraphics.DrawString("About", Font, Brushes.BlanchedAlmond,
                        vRectangle, vStringFormat);

                    vGraphics.Dispose();
                    ReleaseDC(m.HWnd, vHandle);
                    break;
                case WM_NCLBUTTONDOWN:
                    Point vPoint = new Point((int)m.LParam);
                    vPoint.Offset(-Left, -Top);
                    if (vRectangle.Contains(vPoint))
                        MessageBox.Show(vPoint.ToString());
                    break;
            }
        }

------解决方案--------------------
除了把每行的分号去掉

override改成Overrides
类型的定义改成Dim ... As ...

switch ... case
改成
select ... case

等等

还有API的定义修改下,其它没什么要改的了。

Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Integer) As Integer 
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Integer, ByVal hdc As Integer) As Integer
------解决方案--------------------
用IntPtr需要调用ToInt32()
  相关解决方案