By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,647 Members | 1,178 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,647 IT Pros & Developers. It's quick & easy.

Problem with dllimport code included .

P: n/a

Hi everyone,
Can you have a quick look and tell me why the caret is not shown , any help will be greatly appreicated
thank you.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace test
{

public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;

private System.ComponentModel.Container components = null;

public Form1()
{

InitializeComponent();

}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code

private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(456, 240);
this.button1.Name = "button1";
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(456, 280);
this.button2.Name = "button2";
this.button2.TabIndex = 3;
this.button2.Text = "button2";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(616, 334);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool SetCaretPos(int X, int Y);
[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool ShowCaret(IntPtr hWnd);

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool HideCaret(IntPtr hWnd);
private void Form1_Load(object sender, System.EventArgs e)
{
}

private void button2_Click(object sender, System.EventArgs e)
{
HideCaret(this.Handle);
}

private void button1_Click(object sender, System.EventArgs e)
{
ShowCaret(this.Handle);
SetCaretPos(10,10);
}
}

}

Nov 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Just a hint: maybe it is necessary to create a caret at fist via
CreateCaret?.

if SetCaretPos returns false, try to obtain error code with GetLastError (
kernel32.dll )
--
Vadym Stetsyak aka Vadmyst

<Co**********@al.com> wrote in message
news:uk*****************@newsfe5-gui.ntli.net...

Hi everyone,
Can you have a quick look and tell me why the caret is not shown , any help will be greatly appreicated thank you.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace test
{

public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;

private System.ComponentModel.Container components = null;

public Form1()
{

InitializeComponent();

}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code

private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(456, 240);
this.button1.Name = "button1";
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(456, 280);
this.button2.Name = "button2";
this.button2.TabIndex = 3;
this.button2.Text = "button2";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(616, 334);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool SetCaretPos(int X, int Y);
[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool ShowCaret(IntPtr hWnd);

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool HideCaret(IntPtr hWnd);
private void Form1_Load(object sender, System.EventArgs e)
{
}

private void button2_Click(object sender, System.EventArgs e)
{
HideCaret(this.Handle);
}

private void button1_Click(object sender, System.EventArgs e)
{
ShowCaret(this.Handle);
SetCaretPos(10,10);
}
}

}

Nov 17 '05 #2

P: n/a
Just a quick tip about DLLImport.

If you want GetLastError to actually work for you, I suggest adding the
SetLastError=True to the DllImport.

For example:
[DllImport("User32.dll", CharSet=CharSet.Auto, SetLastError=True)]
public static extern bool HideCaret(IntPtr hWnd);

This will make sure the LastError IS set when existing this function.

Eran
================================================== ========
http://dotnetdebug.blogspot.com - Advanced .NET Debugging Blog
The place for WinDbg, SOS, Live and post mortem debugging.

Nov 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.