|
Did you give a look at this[^] ?
To ease the marshaller's job, you may also add this attribute : [MarshalAs(UnmanagedType.FunctionPtr)]
Back to real work : D-21.
|
|
|
|
|
is it possible to build an MDI application in C#, especially using VS.NET?
Michel
It is a lovely language, but it takes a very long time to say anything in it, because we do not say anything in it, unless it is worth taking a very long time to say, and to listen to.
- TreeBeard
|
|
|
|
|
You've got a MDI sample written in C# in your .NET framework samples : SDK\Samples\Quickstart\Winforms\samples\mdi.
Back to real work : D-21.
|
|
|
|
|
|
If you go to http://www.csharp.net, in the 'Code' section there's a library that I think does this. IIRC, it's called Genghis.
|
|
|
|
|
Hi, Does anyone know here how to make a file with C# that has a wrong size. Say 10TB, but a single file that actually only takes a few bytes on the drive?
Thanks
K.D.
|
|
|
|
|
You can see if a file or directory is a Sparse File[^] in c# by examining the file attributes.
Using win32 and unmanaged code, you'd mark a file / dir as sparse using DeviceIoControl passing in FSCTL_SET_SPARSE as the i/o control mode, that is, after you've confirmed the file system supports sparse files. FSCTL_SET_SPARSE[^].
There doesn't appear to be a managed version.
|
|
|
|
|
I have been reading alot about C# determinism, and most of the literature addresses destructors. I understand that the garbage collection is now responsible for calling the class destructor, and the GC is undeterministic. I have read recommendations to implement IDispose and have the client call Dispose(), but what about client server architectures. If I have one C# server connected to multiple clients, which client calls Dispose()? Isn't this why reference counting was invented?
My biggest concern is whether or not my C# server will contain a message pump - someone alluded earlier that it will. Anyone who has created a COM STA server will know that message pumps make your code slow and VERY undeterministic. How to you create a message pump free C# server (something equivilent to a MTA server in COM)?
Thanks,
Aaron
|
|
|
|
|
I created a Windows Application project in C#.
I created a number of forms that are inherited forms.
If I keep the original form in the project, I can only set that form as the Startup object, and it goes without saying that if I remove it, I cannot set anything to the Startup object. (compile says myNamespace.formname does not exist if I manually enter the inherited form name)
Why can't I set an inherited form as a Startup object and how do I get around this???? Even if I add a normal form (not inherited) after my inherited forms it does not allow me to set even that normal form now. In fact, I get no dropdown box in the StartObject property of the project!!!!!
_____________________________________________
I have a tendancy to where my mind on my sleeve I have a habit of losing my shirt...
|
|
|
|
|
Never mind. I found my problem....I have to add the following section to my code manually:
<br />
[STAThread]<br />
static void Main() <br />
{<br />
Application.Run(new myForm());<br />
}<br />
_____________________________________________
I have a tendancy to where my mind on my sleeve I have a habit of losing my shirt...
|
|
|
|
|
In a C# hash is it possible to get an item by its key and to get a key by a value? Something like this:
myhash.Add("David","C#")
myhash.Add("Chris","Perl")
?myhash.Items("David") -- should be C#
?myhash.Keys("Perl") -- should be Chris
What is the correct syntax?
sigh, the things you do for date/times.
*->>Always working on my game, teach me
*->>something new.
cout << "dav1d\n";
|
|
|
|
|
Add a key value pair:
myhas["David"] = "C#";
Get a key by it's value:
string item1 = myhash["David"]
Iterate through all items:
foreach( string key in myhash.Keys )
{
string item1 = myhash[key];
}
Determine if hashtable contains a particular key:
if( myhash.Contains("David") )
{
}
Determine if hashtable contains a particular value:
if( myhash.ContainsValue("C#") )
{
}
In general you won't want to look up a key by it's value since keys are (usually) unique, but values aren't. Does this help?
-Matt
------------------------------------------
The 3 great virtues of a programmer:
Laziness, Impatience, and Hubris.
--Larry Wall
|
|
|
|
|
Thanks Matt -
I needed to have a hashtable of months of the year:
"January","1"
"February","2"
...
and be able to get a month based on a numeric index OR an index based on a month string.
I thought it would be easy with a Hashtable but you're right - it doesn't support lookups by value assuming you could have multiple 'values' with different keys. But there are a lot of cases like this where I know there is a one to one mapping of name/value pairs. Items that are always used in association and are unique.
I used a simple array and wrote a finder method that looked like this:
<br />
string[] months = {"Jan","Feb","Mar",...}<br />
<br />
private int GetMonthIndex(string mo){<br />
for(int i=0;i<mos.Length;i++){<br />
if(mos[i]==mo)return i+1;<br />
}<br />
return -1;
}<br />
Incidentally I asked my perl jedi master and he must have been laughing when he wrote this:
<br />
$hash{'David'} = 'C#';<br />
$hash{'Chris'} = 'Perl';<br />
@keys = grep { $hash{$_} eq 'Perl' } keys %hash; #perl is s1ck<br />
In the end, while I didn't change my use of a simple array and a brutally slow sequential search, I wrote this for future reference:
<br />
public static string GrepHashForKey(Hashtable ha, string search){<br />
foreach(object o in ha.Keys){<br />
if(ha[o].ToString().Equals(search))<br />
return o.ToString();<br />
}<br />
return "";<br />
}<br />
*->>Always working on my game, teach me
*->>something new.
cout << "dav1d\n";
|
|
|
|
|
Just use an ArrayList. Just make sure you add the months to the ArrayList in the right order. Like this:
ArrayList months = new ArrayList();
months.Add("January");
months.Add("February");
int monthNum = months.IndexOf("January") + 1;
string monthName = months[monthNum - 1];
That should do it eh?
-Matt
------------------------------------------
The 3 great virtues of a programmer:
Laziness, Impatience, and Hubris.
--Larry Wall
|
|
|
|
|
A two liner for my woes! Humbling but good to know -
Thanks Matt.
*->>Always working on my game, teach me
*->>something new.
cout << "dav1d\n";
|
|
|
|
|
afronaut wrote:
I needed to have a hashtable of months of the year:
"January","1"
"February","2"
...
and be able to get a month based on a numeric index OR an index based on a month string.
static string PrintMonth(int i)
{
return new DateTime(0).AddMonths(i).ToString("MMMM");
}
static int PrintMonthNr(string month)
{
for (int i = 0; i < 12; i++)
{
if (PrintMonth(i) == month) return i;
}
return -1;
}
"I dont have a life, I have a program."
|
|
|
|
|
One option (in addition to those you already found) would be TWO hash dictionaries. You could create a class that holds both the key name and value, then have both hashes store the same object, one using the key name as the key and the other using the value as the key.
Additionally, you could create a class that wraps this sort of behaviour, giving you exactly the syntax you wanted.
John
|
|
|
|
|
It appears that the old VB6 approach of a messageBox function that displayed info, possibly got info, and passed back the info or the button selection does not exist in the Framework.
To do a modal dialogBox I need to create my own form and set the AccessibleRole = Dialog.
For my buttons, I set DialogResult to the value I want to return.
So I guess that I would follow the following steps to create a Verify (yes, no) dialog box:
Create a form named Verify.
Set the AccessibleRole to Dialog.
Define my screen (example: Do you want to do this?) with two buttons, Yes, No. Define DialogResult as No for the No button and Yes for the Yes button.
In my main program, I code:
VerifyDialog myDialog = new VerifyDialog;<br />
if (myDialog.ShowDialog(this) == DialogResult.Yes)<br />
{<br />
go ahead and do this.<br />
}
Am I on the money or about to toss a handgrenade?
Thanks for help.
_____________________________________________
I have a tendancy to where my mind on my sleeve I have a habit of losing my shirt...
|
|
|
|
|
try this instead :
VerifyDialog myDialog = new VerifyDialog;
if (myDialog.Show()==DialogResult.Yes)
{
go ahead and do this.
}
Cheers,
Daaron
|
|
|
|
|
You were responding as I was updating my post as I was also doing the coding as I was following the message board. Is that multi-tasking or what???
_____________________________________________
I have a tendancy to where my mind on my sleeve I have a habit of losing my shirt...
|
|
|
|
|
The AccessibleRole property is a red herring - it's related to Accessibility for disabled users.
|
|
|
|
|
If you are just asking for confirmation you can use the MessageBox class to display a message box (MsgBox in VB6).
If you need the user to input something (something beyond clicking a button) then you'll have to use the approach you have now.
[edit]
Sample code would probably help you
MessageBox.Show("Are you sure you want to do this?",
"Are you sure?",
MessageBoxButtons.YesNo
);
The Show method returns a DialogResult like you are already using.
[/edit]
James
- out of order -
|
|
|
|
|
I am using transparency effects to create shaped windows, I have followed the basic tutorial found here :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchShapedWindowsFormsControlsInVisualStudioNET.asp
Now on my machine this works like a dream, but on other machines it does not work correctly - transparency doesnt work at all. All machines are set to the same resolution and colour depth (32bpp).
Does anybody have any ideas on the cause of this?
More info :
The image in question is a 24bit bmp, the transparency key I am using is 255,0,255 (fuschia)
|
|
|
|
|
MrEyes wrote:
Now on my machine this works like a dream, but on other machines it does not work correctly - transparency doesnt work at all. All machines are set to the same resolution and colour depth (32bpp).
Are the other test machines running Windows XP?
As far as I know only WXP supports transparency out of the box.
Paul Watson Bluegrass Cape Town, South Africa Ray Cassick wrote: Well I am not female, not gay and I am not Paul Watson
|
|
|
|
|
Windows 2000 and greater support transparency. (95/98/Me Dont)
Contract Software Developer: andrew_lewis@mail.com
|
|
|
|