|
Add a new project to your solution (with your existing project, making build outputs available to your setup project) from the Deployment category. There should be several options available to you. Use the wizard if you're not sure about what to do. It does quite a bit for you.
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
Thanks. The Deployment wizard seems to be a very good starting point. It is a good surprise for me. Until now, I had not noticed its existence.
|
|
|
|
|
Converting an Icon to an Image is easy: Image img = ico.ToBitmap() - except when you need alpha blending. After digging through the IL for Icon.ToBitmap(), the concept is simple and helped me find some .NET docs that discussed off-screen rending with alpha channels. The following code should work:
Image img = new Bitmap(16, 16, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(img);
g.CompositingMode = CompositingMode.SourceCopy;
g.DrawIcon(Icon.FromHandle(hIcon), 0, 0);
g.Dispose();
If I display img in a PictureBox or draw it in a form's graphics object, the alpha channel is all black. If, instead, I draw the icon directly on the form, the alpha channel is blended accordingly.
I've also tried filling the graphics object for the Bitmap img with SystemColors.Control (default for Form, etc.) and then drawing the icon after setting the compositing mode, but that doesn't work either.
Has anyone successfully done this? I'm trying to make a wrapper component for SHGetFileInfo which works pretty well except for the whole alpha blending problem described above. TIA
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
After some digging, the problem is not so a Graphics problem as it is a common controls problem. In order to get the icons to appear with the alpha channel, you have to use a .manifest file for the application as I described in one of my tutorials (just didn't realized that applied to alpha-blended icons, although I now understand why - the list control needs to be the CC6 list control).
Now my problem is only having one particular assembly redirect to CC6 in the Windows XP SBS cache, but despite what the MSDN docs say regarding SBS, this doesn't seem to work for DLLs without having a coresponding .manifest for the EXE (which makes a lot of things appear wrong). .NET assemblies must not use an Activation Context (in the Win32 part of the loading process) like SBS assemblies do. Any ideas of how to make just a DLL use the manifest file or resource (RT_MANIFEST) without forcing the application to?
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
I'm using OleDbDataApapter, et al to access an MS Access database in a C# application.
I have created form with various data bound controls for form-based record navigation.
However, when I try to update the database from the current changes in the data set I get an OleDbException indicating that the UPDATE Statement is invalid. Is there a way to get at the actual statement that is sent to the database?
I know you can get the UpdateCommand text, but this has placeholders for the parameters. If I can see the actual SQL command, then I can fix the problem, it's just a matter of getting hold of that SQL.
Derek Lakin.
I wish I was what I thought I was when I wished I was what I am.
Salamander Software Ltd.
|
|
|
|
|
I'm seeing a lot of tutorials etc for .NET only in C#..
Would it be wise to switch to C# from VC++? In theory anything
in C# can be made in VC++ right?
|
|
|
|
|
In theory
Still, you have to know what you're trying to accomplish. For most purposes, C# is the language of choice for .NET. It should be fairly easy to learn the syntactic and language idioms of C# if you come from the C++ world (as I have.) The question is what usefulness/features do you get if you choose a particular language?
C#, IMHO, is a clean language. C++-esque syntax, with lessons learnt from Java and others, rolled into a beautiful construct. C#, obviously doesn't give you as fine-grained control as C++ using the Platform SDK, but there are plenty of Managed Classes that get you there without having to do a lot of the SDK work (for example, performance counters, network, or crypto.)
C++ is still in the hearts of many a code guru. Sometimes you don't need to use managed code, but there are things that are more difficult in C++ than in C#.
So is it wise? Learning is always wise.
"Good programming is language neutral, and is often more difficult to learn than a new language - after all, it's just syntax."
|
|
|
|
|
imariano wrote:
"Good programming is language neutral, and is often more difficult to learn than a new language - after all, it's just syntax."
I agree. It's a pity that most recruiters don't recognise this fact!
Kevin
|
|
|
|
|
Managed C++ is really a tool for integrating existing unmanaged C++ code and COM components into .NET. Although you can also use it to do new .NET development it's not particularly elegant and you also lack designer support for it, i.e., no drag and drop from the toolbox. (I gather this will be addressed in future versions - not sure if that means v1.1.)
It's far easier just to learn C# and use that for new development. You pretty much need to learn C# anyway, to get the most out of .NET (as you've noticed, lots of examples are only in C#), so you may as well use it for primary development, especially if you already come from a C++ background. Learning C# syntax is trivial. It's the .NET libraries and best practices, etc., that constitute the major learning paradigm.
Kevin
|
|
|
|
|
something to read about...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/drgui02132002.asp
I did hear that the new version of C++.Net will come with a design tool and a lot of syntax clean up. The release date is around Februry 2003.
|
|
|
|
|
That's good. I've not used MC++ yet but my initial forays into the documentation weren't pleasant! The syntax certainly could do with cleaning up!
Kevin
|
|
|
|
|
Help,
Dim tFileStream As System.IO.FileStream
Dim tStreamReader As System.IO.StreamReader
tPath = "C:\CYRILLIC_ENCODED.txt")
tFileStream = System.IO.File.Open(tPath, FileMode.Open)
tStreamReader = New System.IO.StreamReader(tFileStream)
"no cyrillic text" = tStreamReader.ReadToEnd
May be some one can help i get no cyrillic text using this code iv tried many different ways and no hope.
Thanks
|
|
|
|
|
Just a thought :
tPath = @"C:\CYRILLIC_ENCODED.txt";
Back to real work : D-27.
|
|
|
|
|
The default constructor for the StreamReader object uses the UTF-8 encoding. You need to use the appropriate encoding, e.g. iso-8859-5:
Dim tPath As String = "C:\CYRILLIC_ENCODED.txt"
Dim tFileStream As FileStream = File.Open(tPath, FileMode.Open)
Dim Cyrillic As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-8859-5")
Dim tStreamReader As New StreamReader(tFileStream, Cyrillic)
...
|
|
|
|
|
thanks a lot i will try that
|
|
|
|
|
It didnt work it still returning garbadge data and missing charecters.....
Im trying to open and html file and read the contents. When i open it in explorer and view the source the Encoding is Cyrillic (windows).
I have even tried to set the Regional setting to Cyrillic (at least thats what used to work for vb 6.0).
May be you got another tip regarding this.......
Thanks
|
|
|
|
|
actualy
Dim Cyrillic As System.Text.Encoding = System.Text.Encoding.GetEncoding("windows-1251")
was the one that recognized the encoding....
thanks a lot for the tip it was very helpful
|
|
|
|
|
I have an application that uses a custom image format.
What I am trying to do is make it possible to switch to
'thumbnails' in an explorer window, and have it show the thumbnails,
or when selected show it as a preview in the left pane (just like JPG's
and GIF's do already). How do I go about doing this? Just register the file type? or do I need to fiddle with the .net system.drawing.image encoder class?
Thanks!
|
|
|
|
|
Forgot to Add: I REALLY want this custom fileformat to be openable by
the 'windows picture and fax viewer' as well.
|
|
|
|
|
Why should it be anything different than standard listctrl thmubnailing such as the one detailed here[^] ?
Countdown Countdown before me becoming an Artech employee : D-28.
|
|
|
|
|
because I want the thumbnail to be in windows, not my own app?
Just add 'native support' for that certain fileformat so that
explorer.exe will display it in thumbnail mode.
|
|
|
|
|
Ok, why .NET then?
Browsing folders in thumbnail/preview mode is already slow. If you add .NET on top of that, nobody will stand it more than 30 seconds.
You are doing low-level here, and COM/C++ is the de facto language for that.
My 0.5 cent.
Back to real work : D-27.
|
|
|
|
|
I have a Windows.Form that handles events from an object that is executing on a different Thread. I use the following code (modified for posting) to handle events that use a custom EventArgs class:
Private Sub TheEventHandler(ByVal sender As Object, ByVal args As CustomEventArgs)
If Me.InvokeRequired Then
Me.BeginInvoke(New TheClass.CustomEventHandler(AddressOf TheEventHandler), New Object() {sender, args})
Else
...
End If
End Sub
This works fine. I use the following code (modified as well) for handling events that are defined using EventHandler and are passed EventArgs.Empty:
Private Sub TheEventHandler(ByVal sender As Object, ByVal args As EventArgs)
If Me.InvokeRequired Then
Me.BeginInvoke(New EventHandler(AddressOf TheEventHandler), New Object() {sender, args})
Else
...
End If
End Sub
When the code is executing on the non-GUI thread, the sender variable references the object executing on the other Thread (as it should since I fire the event passing Me as the source). However, after the "recursive" call to itself back on the GUI thread, the sender object references the Form that is handling the event. Why is the object being passed into BeginInvoke as the first item in the args array being replaced by the Form object? This doesn't happen in the case of non-EventHandler events (at least ones I created).
Any ideas?
I know I can get around it by just writing my own empty EventHandler delegate, but that seems silly...
|
|
|
|
|
I am using .NET Remoting to access a Class Library that I created in VB.NET.
This class library contains a reference to a COM + component that is used by
several functions. I am able to get the Remoting to work for most functions
but as soon as I try and call a function that is using the COM + component
the app freezes. I don't get any error messages, it just seems to hang. Is
there something I need to do in order to use a COM + component when
Remoting?
|
|
|
|
|
I am using .NET Remoting to access a Class Library that I created in VB.NET. This class library contains a reference to a COM + component that is used by several functions. I am able to get the Remoting to work for most functions but as soon as I try and call a function that is using the COM + component the app freezes. I don't get any error messages, it just seems to hang. Is there something I need to do in order to use a COM + component when Remoting?
|
|
|
|