|
For example,when mouse moves over the webbrowser's client area,a MouseOver event will be fired.
Thanks,a lot.;)
|
|
|
|
|
I recently got my hands on Visual Studio.net and it came with C#. Now, I've been using C++ for a while now, and am starting to get into the nitty gritty of windows programming (using GDI, not MFC) and I wanted to know if I should learn C# instead. I mean, I plan on learning some C#, but is C++ still more powerful? I've looked for articles on the subject, but I really wanted to hear some people's oppinions. What do you guys think? Is C# as clean as C++? Is it as powerful? As fast?
Thanks for your input!
-untwisted
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
C# is not as fast, and takes more memory. (I look forward to the day that they optimize IL and C#.) It is not as powerful in some ways, but it is more powerful in others. It does a lot of the tedious and slow work for you, freeing your time for other aspects of development. The syntax is the same as in C++, which is a big plus. It is just as clean as C++, if not more so.
As for me, I'm hooked! I love C#. I'm someone who has a lot of ideas, but not nearly enough time in comparison to the number of ideas, so I really like the time that C# saves me, especially since I don't have MFC/ATL/WTL, etc.
Here is a short feature comparison:
operator overloading Y/Y
method overloading Y/Y
single inheritance
multiple inheritance Y/N (coming in 2.0)
templates Y/N (coming in 2.0)
pointers Y/Y(unsafe only)
new keyword can explicitly hide/replace inherited member N/Y
delegates N/Y
foreach iterator N/Y
case fallthrough in switch statement Y/N
bit fields Y/N
default values in method parameters Y/N
And here is an MSDN article that may help you.
[^]
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
Much thanks! That helps a lot. No one would give me a sure answer on weather or not it was faster, etc. Is there any way in C# to get to the bare bones of programming though? If I wanted to could I create a windows application from scratch using windows GDI? What makes C# slower? What I'm getting at I guess is this: Can C# be a replacement language for C++? I realize that the little drag and drop of C# must make it slower, and add overhead to your project, but if I wanted to could I skip that? Can I make my code just as fast and clean and efficient in C# as in C++? Sorry if I'm being redundant, but I'm having a hard time explaining my question. It's late here, I think I need some sleep
Thanks again!
-Brian
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
untwisted wrote:
If I wanted to could I create a windows application from scratch using windows GDI?
Yes, you could, but you probably wouldn't see a really noticable speed increase.
untwisted wrote:
What makes C# slower?
It's managed, and it seems that MS put hardly any effort into optimizing MSIL. I'd really like to see them do that - it would make a big difference (and I believe they are planning to, but the question is: when?). If they optimized IL, all .NET languages would benefit from the speed boost. It's not like C# code runs at a snail's pace, but nevertheless, the difference between C++ speed and C# speed is noticable.
untwisted wrote:
Can C# be a replacement language for C++?
Yes, it can - in fact it can be an improvement over C++, if you don't mind the speed drop. With .NET Windows Forms, the problem seems to be GDI+, which is not hardware-accelerated (this will be fixed in v2.0).
That huge class library is a timesaver 100x over.
Having said this, I, for my part, will still continue to use C# as my main development platform.
If you really want speed and .NET together, try Managed C++. It's not as easy as C#, but it gives you that extra speed edge.
BTW, sorry if I confused you in the last post - in the comparison list, the left Y/N is C++ and the right Y/N is C#. Also, I forgot to say - C# and C++ support single inheritance.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
That really clears everything up! Thanks a MILLION for your help!
-untwisted
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
A lot depends on what type of software you wish to develop. If it is games demanding lots of horsepower or any program that is heavily graphics based thatr requires larges amount of graphic speed, no, stay with C++.
If your applications are database driven, corporate type applications or just general utilities you will probably notice no diffrence other than it may take you a tenth of the time to create the application in C#/.NET than C++.
If you wish to see the speed of C#, you can download WebMatrix from ASP.NET. That is a free product from Microsoft that was built entirely from C#/.NET. Much of Microsoft's inhose development is switching to C# (or at least they latest Microsoft .NET show said they were).
Also, .NET applictions have a much smaller footprint. Large applications are usually under a meg and as long as someone has .NET installed that is all you need to ship. Makes it lightwieght to distrubute over the Internet.
There is yet another benifit, you can actual create Linux GUI applications using C# via the Mono Project.
Debugging cycle is extreamly shorter duration for applications of any size. I hardly even think about debugging anymore since I seldom find bugs after the initial building is complete. Not that I am such a great programmer, but there is far less to have problems with.
Another plus is that you can build web sites with the same coding you use for your Windows applications. You don't have to learn diffent languages and different APIs, you use the same .NET classes and the same language.
Distributed applications on the Windows platform are a pain. It is easy to remote your application across machines and use the horsepower of multiple machines.
Well, I have been working in C/C++ for over 20 years now and seven months ago I switched all my development to C#/.NET!
BTW, jobs are really starting to flow for C#/.NET programmers, one recently on Monster in Portland Oregon for 90K
Rocky Moore <><
|
|
|
|
|
Rocky Moore wrote:
Another plus is that you can build web sites with the same coding you use for your Windows applications. You don't have to learn diffent languages and different APIs, you use the same .NET classes and the same language.
This is not entirely true, system.windows.forms v/s system.web.ui, for example, the datagrid is different in windows ns then web ns.
please understand, according to Brian Valentine from MSFT, that one day everything will be managed code on the windows os, except device drivers and kernel code. you can find this in april 2003 edition of Windows & .NET Magazine, pg. 64 (second to last paragraph)
R.Bischoff | C++
.NET, Kommst du mit?
|
|
|
|
|
Soliant wrote:
This is not entirely true, system.windows.forms v/s system.web.ui, for example, the datagrid is different in windows ns then web ns.
Yes, I would have thought that would be obvious, there would be the natural seperation of type based on platform in that one is a Windows application and another is a web application that is stateless and thus controls and progamming logic for the presentation layer would be different in that fact, but still able to use all the base logic. You would still be using the same langauge and core for both unlike ASP where you would have to use scriptiong langauages or code down to IISAPI modules and have completely different core.
Of course there is an article on CP by Mark Clifton (I think it was) that uses a layout engine to run on eitehr ASP.NET or as a WinForm application using the same code.
In short you have the full power of .NET and C# for use in either web or Windows applications allowing most logic to be used by both. Now if they could do that for the client side of the browser
Rocky Moore <><
|
|
|
|
|
hello
here is a small problem that i am looking for some solution.
problem is :
how can i put the values in an html table (on a web page) into the table in a database (sql server or any)?
LOOKING FOR help.
ASIM
Asim
|
|
|
|
|
Can anyone give me a big picture of what configuration files(like Web.config files) are for? and how to use them?
Thanks a lot,
|
|
|
|
|
dear my love ones,;P
Say i have 2 buttons: btnDoSomeWork: implement taskX
and btnTryAgain: allow user to hit btnDoSomeWork
I run my program, and hit btnDoSomeWork , let it run taskX
Now I hit btnTryAgain, take some new input, and have user click btnDoSomeWork the second time.
This will make the 2 same taskX(s) run concurrently, which is not what i want.
Is there anyway to stop the first taskX when i hit btnTryAgain?
THANKS IN ADVANCE
|
|
|
|
|
Try running them in a separate thread. Then get the invoking method to abort the thread if it's running.
"Póg mo thóin!"
"I'm sorry but if they're gonna start talking to us about going to Uni and steering clear of drinking...then students bars shouldnt sell drinks for 50p"
Jonathan 'nonny' Newman
Homepage [www.nonny.com] [^]
Bob Chum Dev site [^]
|
|
|
|
|
Ok. After about 12 hours of trying to combine multiple assemblies into a single EXE, I am finally making some progress.
I ended up compiling each class into its own module (quite a pain). I am now trying to use al.exe to combine all of them. If I use the following command line:
al.exe ActionNotSpecifiedException.netmodule Arguments.netmodule ConsoleLogger.netmodule DirectoryUtils.netmodule FileLogger.netmodule FileUtils.netmodule ProgCommand.netmodule ProgInfo.netmodule ProgNotFoundException.netmodule InvalidCommandLineException.netmodule Logger.netmodule LoggerArrayList.netmodule LoggerManager.netmodule StreamWriterLogger.netmodule StringArrayList.netmodule TextWriterLogger.netmodule TimeOutException.netmodule ProgCommandRunner.netmodule /main:mesh.Prog.ProgCommandRunner.Main /out:ProgCommand.exe /target:exe
I can actually create the ProgCommand.exe executable. Except that it has to be in the same directory as the modules in order to run. So close, yet so far.
I also tried to combine everything in my make file with the following code:
$(DEST)\$(ASSEMBLY): $(METADATA) $(MODULES) $(DEST)
$(CSC) $(EXETARGET) /addmodule:$(MODULES: =;) /main:mesh.Prog.ProgCommandRunner.Main /out:$@ %s
which on the command line translates to:
csc /nologo /debug+ /d:DEBUG /d:TRACE /t:exe /addmodule:.\Arguments.netmodule;.\InvalidCommandLineException.netmodule;.\DirectoryUtils.netmodule;.\FileU
tils.netmodule;.\TimeOutException.netmodule;.\StringArrayList.netmodule;.\Logger.netmodule;.\LoggerArrayList.netmodule;.\TextWriterLogger.netmodule;.\ConsoleLog
ger.netmodule;.\StreamWriterLogger.netmodule;.\FileLogger.netmodule;.\LoggerManager.netmodule;.\ActionNotSpecifiedException.netmodule;.\ProgCommand.netmodule;.
\ProgNotFoundException.netmodule;.\ProgInfo.netmodule;.\ProgCommandRunner.netmodule /main:mesh.Prog.ProgCommandRunner.Main /out:.\ProgComma
nd.exe ..\build\AssemblyInfo.cs
However, this gives me the following error:
error CS1555: Could not find 'mesh.Prog.ProgCommandRunner.Main' specified for Main method
NMAKE : fatal error U1077: 'csc' : return code '0x1'
Does anyone have any idea what I am doing wrong? I have been trying to get this to work for quite some time. All I want to do is combine multilple projects into one executable.
Thanks in advance... (I hope)...
mike c
|
|
|
|
|
You cannot use a .NET module from the assembly it is contained in. Why not make one big assembly in the first place? Else you will have to go a long and painful route via IL.
<a TITLE="See my user info" href=http:
|
|
|
|
|
>Why not make one big assembly in the first place?
Because my code is broken up into different projects to make it more reusable.
I guess i could make one project that linked to all of the other individual files, but I just figured there would be another way to do it.
I have been rpetty surprised by how difficult this has been, and how little information i can find on it.
Thanks for the info...
mike c
|
|
|
|
|
There is an option if you want to make one big exe (unmanaged code will not work here) is to use IL Linker/Binder. Do a search on GotDotNet for it.
<a TITLE="See my user info" href=http:
|
|
|
|
|
mikechambers wrote:
Because my code is broken up into different projects to make it more reusable.
Why not take your reusable code and put into into DLLs? That way you just add a reference to your DLLs and they are pulled into your application. This allows you to keep the in different projects and still be used in any of your applications. Just change the type of your project from EXE to DLL for each of those extra projects and add reference in your main application.
Rocky Moore <><
|
|
|
|
|
I have been thinking about this. So i could just combine all of the DLLs into one DLL?
i.e. I would have one exe and one dll? The DLL would then load the EXE.
Would I have to change anything in the EXE or would it know to look in the new DLL?
thanks for the input. I am new to c# and thus am not familiar with how apps are usually deployed.
mike c
|
|
|
|
|
Well, actually, you have your program broke up in project right now. You would select the output to be a DLL for each of the projects which contains "supporting code". The project that has your main entry would be set as EXE output.
Assuming you have all your projects in one solution file, you would right click on the References item in your project that contains the EXE and select Add Reference. This will bring up a that should have three tabs and the last one being "Projects". The tab will list all the projects that are in the currently solution and you simply select the projects that you main application will need (probably all of them) and hit [Select] and then OK. That will bind those DLLS to your main application. Each project will produce on DLL and you will have your single main application (EXE). When you launch your EXE it will automatically load the DLLS as needed. Not one line of code to do it.
You might try just creating a new solution with a single WinForm Windows application. Then Insert another project into the solutions but this time use the "Class Library" project. That will build your skeleton project already set as a DLL. Then in the class it generates simple put a single method in there ( that does:
public static IAmHere(string message)
{
System.Diagnostics.Debug.WriteLine(message);
}
Right click on you main WinForm project on references and selec the Add References and add the project reference to the Class Library project you created.
After that, add in your main form, like in the constructor, a call to your library class you created and the IAMHere function your added to it like:
TheClassICreated.IAmHere("Yep");
This will call the method that is in the class library dll you created. To your application it does not care if it is in a DLL or the main application, it calls the same in either case. The only thing you need to do to let your application use the code as if it is in the main application is to add the reference to the project.
In the old C++ days, I did not bother with DLLS unless I had to. In C# they are so easy to use, I end up with a dozen or more of them in a sizable application. I build librarys of utility classes, wrappers to controls, abstraction classes for abstracting data, simply popup forms for quick data input, and tons of other things. I put each into a root namespace and then create others similar to the .NET namespaces (like MyLibs.Windows.WinForms for my control wrappers or MyLibs.IO.Data for my data abstraction routines). It is just a method to organize the classes so that I can find them easily without innermixing them with the standard classes.
When you add a reference to main exe project it will usually copy the dlls to your output directory. You can specify if you want them copied or not. I usually have them copied.
Also, with DLLs in .NET you do not have the linkage problems you do with C++.
Rocky Moore <><
|
|
|
|
|
Thanks for the info. This is actually exactly how I have my solution set up, and as you point out, it creates multiple dlls and and EXE.
I was trying to find a way to then include all of those in one file, so I don't have to distribute all of the DLLs seperately.
thanks again for the suggestions...
mike c
|
|
|
|
|
I have been working on this problem but still no satisfactory result, so i hope someone could help me out here.
I have a RichTextBox and and its width is fixed. When i input some text to it at runtime, i need to dynamically adjust the height of this rich text box so that all the text are visible, but no scroll bars are to be used.
Anyone have any ideas??
Weiye, Chen
When pursuing your dreams, don't forget to enjoy your life...
|
|
|
|
|
public bool InitializeGraphics()<br />
{<br />
try<br />
{<br />
PresentParameters presentParams = new PresentParameters();<br />
presentParams.Windowed=true;<br />
presentParams.SwapEffect = SwapEffect.Discard;<br />
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);<br />
device.DeviceCreated += new System.EventHandler(this.OnCreateDevice);
this.OnCreateDevice(device, null);<br />
return true;<br />
}<br />
catch (DirectXException)<br />
{ <br />
return false; <br />
}<br />
}
Why do we need to subscribe to the DeviceCreated event in this situation? enlight me, thanks in advance
|
|
|
|
|
wingcom wrote:
Why do we need to subscribe to the DeviceCreated event in this situation? enlight me, thanks in advance
Not from the dumb example from MSDN... WHy do they bother at all? Its the only reason I havent touched any 3d stuff.
SO, you dont really need it, unless your 3d device will be resetting and you need to be notified of this.
<a TITLE="See my user info" href=http:
|
|
|
|
|
Hello again.
I have 2 related tables in an Access DB:
MainTable --------> RelatedTable
^
^ ^
(one) to (many)
The typed DataSet is filled properly and then a DataGrid takes responsibility for displaying the information. Everything works perfect. I get the "+" link to navigate to the RelatedTable, and the data is displayed accordingly.
Now, I need to display in the "child" DataGrid (the one that opens after you click the "+" link) not only the related data, but also some other data from the same RelatedTable (but not related to the MainTable).
Can this be accomplished through the "child" DataGrid, since the initial purpose of such a mechanism is to display only the related data from a child table?
|
|
|
|
|