Tag: C#的

枚举像alt-tab这样的窗口

我正在创build一个替代Vista的替代品,但我列出了所有活动的程序的一些问题。 我使用EnumWindows来获取Windows列表,但是这个列表是巨大的。 当我只有10个窗户打开时,它包含约400个项目。 这似乎是每一个控制和许多其他的东西的好处。 所以我必须以某种方式过滤这个列表,但是我不能像alt-tab一样设法完成这个列表。 这是我现在用来过滤列表的代码。 它工作得很好,但我得到了一些不需要的窗口,如Visual Studio中的分离工具窗口,我也想念iTunes和Warcraft3等窗口。 private bool ShouldWindowBeDisplayed(IntPtr window) { uint windowStyles = Win32.GetWindowLong(window, GWL.GWL_STYLE); if (((uint)WindowStyles.WS_VISIBLE & windowStyles) != (uint)WindowStyles.WS_VISIBLE || ((uint)WindowExStyles.WS_EX_APPWINDOW & windowStyles) != (uint)WindowExStyles.WS_EX_APPWINDOW) { return true; } return false; }

如何在WPF / C#中的不同区域设置键盘上捕获“#”字符?

我的WPF应用程序处理键盘按下,特别是#和*字符,因为它是一个VoIP电话。 我有一个错误,虽然与国际键盘,特别是英国的英文键盘。 通常情况下,我听3键,如果换档键修改器closures,我们就开始做一些事情。 但在英式键盘上,这是“英镑”字符。 我发现英国的英文键盘上有一个“#”的专用键。 显然,我们可以只听那个特定的关键字,但是这并不能解决美国的英文是shift-3,所有的无数其他键盘都是这样。 长话短说,我如何从一个按键听某个特定的angular色,无论是一个关键的组合或单一的键,并作出反应呢?

如何将TCP套接字更改为非阻塞?

你如何使一个套接字非阻塞? 我知道fcntl()函数,但我听说它并不总是可靠的。

如何反转颜色/颜色?

我知道这不会直接颠倒一种颜色,只会“反对”它。 我想知道是否有人知道一个简单的方法(几行代码)来反转任何给定颜色的颜色? 目前,我有这个(这不完全是一个倒置的定义,因为如果我通过它灰色/灰色,它会返回一些非常相似的东西,例如127,127,127): const int RGBMAX = 255; Color InvertMeAColour(Color ColourToInvert) { return Color.FromArgb(RGBMAX – ColourToInvert.R, RGBMAX – ColourToInvert.G, RGBMAX – ColourToInvert.B); }

什么是复制elision,它是如何优化复制和交换的习惯用法?

我正在阅读复制和交换 。 我尝试阅读Copy Elision上的一些链接,但无法正确理解它的含义。 有人可以解释一下这个优化是什么,特别是下面的文字是什么意思 这不仅仅是一个方便的问题,实际上是一个优化。 如果参数绑定到一个左值(另一个非const对象),则在创build参数时会自动创build该对象的副本。 但是,当s绑定到右值(临时对象,文字)时,副本通常会被省略,从而保存对复制构造函数和析构函数的调用。 在参数接受为常量引用的赋值运算符的早期版本中,当引用绑定到右值时,复制elision不会发生。 这导致一个额外的对象被创build和销毁。

什么时候可以在C中使用全局variables?

显然,这里有很多不同的意见,从“ 永远不要!总是封装(即使它只是一个macros)! ”到“ 没什么大不了的 – 当它比较方便时使用它们 ”。 所以。 具体的具体原因(最好举一个例子) 为什么全局variables是危险的 当应该使用全局variables代替替代品 对那些试图不恰当地使用全局variables的人有什么select? 虽然这是主观的,但我会select一个答案(对我来说,最好的代表每个开发者应该与全局的爱/恨关系),社区将投票他们到下面。 我相信新手有这样的参考是很重要的,但是如果有另外一个与你的答案基本类似的答案,请不要把它弄乱 – 增加评论或者编辑别人的答案。 -亚当

为什么int指针“++”增加4而不是1?

指针的值是一个variables的地址。 在int指针增加1后,为什么int pointer值增加了4个字节。 在我看来,我认为指针增量后指针的值(variables地址)只增加1个字节。 testing代码: int a = 1, *ptr; ptr = &a; printf("0x%X\n", ptr); ptr++; printf("0x%X\n", ptr); 预期产出: 0xBF8D63B8 0xBF8D63B9 其实输出: 0xBF8D63B8 0xBF8D63BC 编辑 : 另外一个问题 – 如何访问一个int占用的4个字节?

确定是否字符是一个数字或字母

如何确定C或C中的char是数字还是字母? 使用更好吗? int a = Asc(theChar); 或这个? int a = (int)theChar

C#audio库

我正在寻找在C#中开发audio播放器,但想知道什么库可用于播放。 我正在寻找一个免费的图书馆,允许播放audio格式的广泛列表(例如mp3,wma,wav,ogg等)。这几乎是我需要的基本function。 但是,如果我可以挑剔,可以转换格式之间的audio文件的库将是方便的。 做谷歌search我遇到了alvas.audio库,但它不是免费的。 VLC库也不错,但是我无法工作,而且我更喜欢用dll打包我的应用程序,而不是让我的用户在他们的机器上安装VLC软件。 感谢您的任何提示或build议。

为什么允许嵌套类模板的部分特化,而完整不是?

template<int x> struct A { template<int y> struct B {};. template<int y, int unused> struct C {}; }; template<int x> template<> struct A<x>::B<x> {}; // error: enclosing class templates are not explicitly specialized template<int x> template<int unused> struct A<x>::C<x, unused> {}; // ok 那么为什么不允许内部的,嵌套的类(或函数)的明确的专门化,如果外部类不专门呢? 奇怪的是,我可以解决这个问题,如果我只是通过简单地添加一个虚拟模板参数来部分专门化内部类。 使事情变得更丑陋,更复杂,但工作起来。 我认为完整的专业化是部分专业化的一个子集,尤其是因为你可以通过添加一个虚拟参数来expression每一个完整的专业化。 所以这个在部分专业化和完全专业化之间的歧义对我来说并不合适。 不幸的是,comp.std.c ++中没有人敢回答,所以我在这里再次带着赏金。 注意:我需要这个特性来为内部类的recursion模板提供一组外部类,内部参数的特化取决于外部模板参数。