大家不要相信有人吹的Paint.net是纯C#+.Net做的,你下了源码看一下,有大量的非托管Dll的引用,也就是说,用纯.Net+C#并不能实现我们所要的功能.又听人说C#只相当于C++的70%的功能.
大家记不记得C#刚出来的时候,微软吹的说 C#具且VB的快速和具有C++的行动力,这句话一定把大家骗到现在..........呵呵.. 还有人说,Paint.net相当于,Photoshop5.0,我晕
Photoshop的安装文件都那么大,功能那么多,Paint.net要是做来象
Photoshop那个大,一定是个只有大型计算机才能运行的家伙......
大家还是好好学习C++吧!!,
我复制了部分[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool OpenClipboard(IntPtr hWndNewOwner);[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool CloseClipboard();[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetClipboardData(uint format);[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsClipboardFormatAvailable(uint format);[DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)]
internal static extern void SHCreateItemFromParsingName(
[MarshalAs(UnmanagedType.LPWStr)] string pszPath,
IntPtr pbc,
ref Guid riid,
out IntPtr ppv);[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool VerifyVersionInfo(
ref NativeStructs.OSVERSIONINFOEX lpVersionInfo,
uint dwTypeMask,
ulong dwlConditionMask);[DllImport("kernel32.dll")]
internal static extern ulong VerSetConditionMask(
ulong dwlConditionMask,
uint dwTypeBitMask,
byte dwConditionMask);[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeviceIoControl(
IntPtr hDevice,
uint dwIoControlCode,
IntPtr lpInBuffer,
uint nInBufferSize,
IntPtr lpOutBuffer,
uint nOutBufferSize,
ref uint lpBytesReturned,
IntPtr lpOverlapped);[DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool ShellExecuteExW(ref NativeStructs.SHELLEXECUTEINFO lpExecInfo);[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool GlobalMemoryStatusEx(ref NativeStructs.MEMORYSTATUSEX lpBuffer);[DllImport("shell32.dll", SetLastError = false)]
internal static extern void SHAddToRecentDocs(uint uFlags, IntPtr pv);[DllImport("kernel32.dll", SetLastError = false)]
internal static extern void GetSystemInfo(ref NativeStructs.SYSTEM_INFO lpSystemInfo);[DllImport("kernel32.dll", SetLastError = false)]
internal static extern void GetNativeSystemInfo(ref NativeStructs.SYSTEM_INFO lpSystemInfo);[DllImport("Wintrust.dll", PreserveSig = true, SetLastError = false)]
internal extern static unsafe int WinVerifyTrust(
IntPtr hWnd,
ref Guid pgActionID,
ref NativeStructs.WINTRUST_DATA pWinTrustData
);[DllImport("SetupApi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern IntPtr SetupDiGetClassDevsW(
ref Guid ClassGuid,
[MarshalAs(UnmanagedType.LPWStr)] string Enumerator,
IntPtr hwndParent,
uint Flags);
大家记不记得C#刚出来的时候,微软吹的说 C#具且VB的快速和具有C++的行动力,这句话一定把大家骗到现在..........呵呵.. 还有人说,Paint.net相当于,Photoshop5.0,我晕
Photoshop的安装文件都那么大,功能那么多,Paint.net要是做来象
Photoshop那个大,一定是个只有大型计算机才能运行的家伙......
大家还是好好学习C++吧!!,
我复制了部分[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool OpenClipboard(IntPtr hWndNewOwner);[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool CloseClipboard();[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetClipboardData(uint format);[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsClipboardFormatAvailable(uint format);[DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)]
internal static extern void SHCreateItemFromParsingName(
[MarshalAs(UnmanagedType.LPWStr)] string pszPath,
IntPtr pbc,
ref Guid riid,
out IntPtr ppv);[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool VerifyVersionInfo(
ref NativeStructs.OSVERSIONINFOEX lpVersionInfo,
uint dwTypeMask,
ulong dwlConditionMask);[DllImport("kernel32.dll")]
internal static extern ulong VerSetConditionMask(
ulong dwlConditionMask,
uint dwTypeBitMask,
byte dwConditionMask);[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeviceIoControl(
IntPtr hDevice,
uint dwIoControlCode,
IntPtr lpInBuffer,
uint nInBufferSize,
IntPtr lpOutBuffer,
uint nOutBufferSize,
ref uint lpBytesReturned,
IntPtr lpOverlapped);[DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool ShellExecuteExW(ref NativeStructs.SHELLEXECUTEINFO lpExecInfo);[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool GlobalMemoryStatusEx(ref NativeStructs.MEMORYSTATUSEX lpBuffer);[DllImport("shell32.dll", SetLastError = false)]
internal static extern void SHAddToRecentDocs(uint uFlags, IntPtr pv);[DllImport("kernel32.dll", SetLastError = false)]
internal static extern void GetSystemInfo(ref NativeStructs.SYSTEM_INFO lpSystemInfo);[DllImport("kernel32.dll", SetLastError = false)]
internal static extern void GetNativeSystemInfo(ref NativeStructs.SYSTEM_INFO lpSystemInfo);[DllImport("Wintrust.dll", PreserveSig = true, SetLastError = false)]
internal extern static unsafe int WinVerifyTrust(
IntPtr hWnd,
ref Guid pgActionID,
ref NativeStructs.WINTRUST_DATA pWinTrustData
);[DllImport("SetupApi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern IntPtr SetupDiGetClassDevsW(
ref Guid ClassGuid,
[MarshalAs(UnmanagedType.LPWStr)] string Enumerator,
IntPtr hwndParent,
uint Flags);
解决方案 »
- C#程序关于某个线程意外退出后引发的程序奔溃
- 急急!!!无法加载 DLL“xxx_dll” 找不到指定的模块。 (异常来自 HRESULT0x8007007E)
- 更新多条记录 (第一次发贴,请大家帮忙,谢谢,再谢谢)
- 有两个页面,分别为页面1和页面2,从页面1跳转到页面2后,页面2继续存在,应该用那个命令?
- [求助]xml生成treeview问题。。很头痛。。因为我很菜。。
- 求助Visual Studio 2005(winform) TextBox输入数字
- listView1相对复杂的问题,高手请进
- 关于数据的问题,极度郁闷,高手请指教,在线等,谢谢
- 请问如何用C#调用mysqldump进行数据库备份?
- IsPostBack问题
- 打印excel模板,如何控制进纸长度。最后20分。谢谢
- C/S结构中一般如何传递表数据?
.net framework只是把api封装了起来,并不是完全脱离api。
有些功能实现C#的确会比C++差点.说.NET优势在哪里,我就奇怪了C++.NET到底是什么,难道不能解决一些问题吗???
如果调用API也说是麻烦.不方便,用C++,那么软件的世界就很可怕了,因为以后的软件应该更智能化,业务流程越来越复杂,如果用一个开发效率极低的来开发,那么使用的人力物力,哎!不可想象!!
我说的是调了API是因为它调用了非托管代码.
.Net不是称为托管代码吗??不是说具C++的行动力吗?(微软广告语)
那为什么有些功能却要用非托管的而不全用托管的代码呢?
因为调用了非托管代码就不是纯的了?楼主是这个意思?我只想说楼主很欠抽啊~~你这么说就像``用Windows的就不准用除了IE之外的浏览器一样``
我想问问LZ,除了调用API之外。还有哪里是用C++给写出来的??
如果有,那你就是对的,如果没有,那就哪儿凉快你哪儿呆去。不要在这里胡扯!!
具体一个功能块是用.net系统库,第三方库,C/C++ DLL或是别的实现是不重要的。
简单的说,只要是有窗口的应用程序基本上就一定用API,即使用C++,难道就说这个程序不是C++写的?
@spkl1(柏芝你走吧我放不下韩红就叫我朝伟吧虽然歌唱得微软不是在包装MFC和API为.Net吗??为什么有些API不包装完整呢??学了C#还要去了解C++
包装不完整就不要包装,也不要花钱,让人们去用熟悉的MFC,API......@waterine(waterine)
.Net的架构的目的,不就是要统一类库吗/?
如发光,呀,我才62K大小的图片,搞得象动画一下,慢慢地变化
还有再试一下轮廓,呀也是象动画一样,慢慢地从上往下变
有人说没有经过优化,难道有微软的参与指导,优化不好吗/?
再试一下Photoshop5.0那才叫快,,呵呵....
事实胜于雄辨哈
90%的东西,最终还是调了api。
.net的方向在于WEB方面吧...
C#好像写不出全局钩子吧..........除了两个特殊的.... 不知道哪位大人会写,可能我水平差..net的目的就是快速开发, 让人变傻瓜... 这样的结果就是...是个人都能做程序员. 关键是低级的还是高级的. 也导致了IT民工的产生, 低廉的劳动力.....
有些问题还真只有C/C++解决的.....但也不是否定C#. C#本来的目的就不在于此
你干嘛不鼓励去写01代码,这样写程序的就不会变成傻瓜了,而要变机器人了
把编码难道降低,让人更多地去考虑其它问题了,难道不好?
public class test{
static void main(){
Console.WriteLine("Hello");
Console.WriteLine("World!");
}
}当第一次执行到Console.WriteLine时,它会去搜索元数据中这个方法的IL,并翻译成CPU指令.当下次再看到同样的指令时,它是不会再去翻译的,而且直接去内存找以前翻译过的CPU代码执行...想想要在一个流量很大的系统(例如服务端程序),这里常常要执行重复的操作(如:多线程),这处和非托管程序性能那个高些?再说了,非托管代码又不是就只有C#一种,干嘛对它有偏见?
-------------------------
1.难道你不知道C++也要运行时环境支持?只不过现在的操作系统已经预装了而已...至于预装.NET Framework...你没用过Vista或Server 2008?就算是Server 2003 .NET 1.1应用也不需要安装...
2..NET是能和C++比的吗?要比较也只有J2EE...
3.轻松实现?你不知道.NET开发一个商业应用C++要花数倍甚至数十倍的代价?
4.需要安装运行时环境就叫“失败”?那我可以告诉你天下最“失败”的就是Java和Oracle...99%的商业产品都很“失败”...见识少没关系可以学但不要乱下结论...ps:这两天挖坟党出没翻出不少老帖啊...呵呵
JAVA的JVM也并不大. 就是Java本身的运行速度太满了.
我相信未来几年内, XP和Vista很多小软件都是C#做得了.不过很多核心的软件, 大的软件, 比如还是C++做的, 那些东西不是因为方便就能开发得出来的, 连C#的编译器都是C++做得. 其他的还扯什么啊.
楼主还有待于学习。
目前来看VC“被淘汰”只少还需要好几年,
不过,如果你积累了很多的桌面的类的话,下次再用时你不就可以不用重写了?
这个格式没有见到过。
顺便提醒一下,Paint.net官网下载的带有病毒。
也看了一下Paint.net效率极差。photoshop里面很多不是gdi。用gdi很多是没办法实现的。
我学.NET不久就听说这个了,下了个试了一下。安装程序就卡得我死去活来,装上后更卡得完全没法用
PS吗,至少我当时的机子用PS7.0还是很流畅的