Articles of c + +

我如何移动粘贴/贴紧wpf窗口

当我移动一个“主”窗口时,我想移动两个或更多的粘性窗口 我想要做这样的事情 private void MainWindow_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { this.DragMove(); foreach (var window in App.Current.Windows.OfType<Window>()) { window.Move(); // move it } } } 我想用这个解决scheme来捕捉窗口 用于WPF的捕捉/粘滞/磁性窗口http://programminghacks.net/2009/10/19/download-snapping-sticky-magnetic-windows-for-wpf/ 但是我怎样才能移动它? 编辑 在Gustavo Cavalcanti的回复之后,我提了几个想法。 这是我的问题的粗略解决scheme。 using System.Windows; using System.Windows.Data; namespace DragMoveForms { /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 […]

从主function最大化窗口?

我已经使用了一个互斥体来运行一个单一的实例程序,现在我希望窗口变得最大化,如果当用户重新打开应用程序时,这个窗口最小化。 这是我目前在我的Program.cs文件中的代码: static class Program { [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { bool Ok = true; string ProductName = Application.ProductName; Mutex m = new Mutex(true, ProductName, out Ok); if (!Ok) { System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(ProductName); SetForegroundWindow(p[0].MainWindowHandle); } […]

如何检查系统是否处于注销状态?

我想检查系统是否处于注销状态或不在VC + +,有什么想法?

如何在C ++中添加环境variables?

有没有什么办法可以通过C ++在Windows中添加环境variables? 他们必须添加在“我的电脑 – >属性 – >高级 – >环境variables” 谢谢

Silverlight是否真的不支持OpenGL?

有没有办法在Silverlight上实现OpenGL? 我们需要创build一个Web浏览器应用程序来加载OpenGL 3D图像,并执行旋转和缩放function。 我们可以在WPF窗口应用程序中轻松加载OpenGL组件。 但是不允许将OpenGL加载到Silverlight应用程序中。 如果Silverlight不支持OpenGL,用OpenGL 3D创buildWeb应用程序的最佳select是什么?

有没有办法中止SQLite调用?

我在Windows应用程序中使用SQLite3。 我有源代码(所谓的SQLite合并)。 有时我必须执行大量的查询。 也就是说,我在准备好的语句上调用sqlite3_step ,并且花费很多时间来完成(由于繁重的I / O负载)。 我想知道是否有可能放弃这样的电话。 如果能够在同一个线程的调用过程中进行一些后台处理(因为大部分时间都用于等待I / O完成),我也会很高兴。 我想过自己修改SQLite代码。 在最简单的情况下,我可以在每次调用ReadFile / WriteFile之前检查一些条件(例如中止事件句柄),并适当地返回一个错误代码。 并且为了允许后台处理文件应该以重叠模式打开(这使得asynchronous的ReadFile / WriteFile )。 在某些情况下,即使启用了日志, WriteFile中断是否有可能使数据库处于不一致的状态? 我想不是,因为日志文件的整个想法是准备任何types的任何错误。 但是我想听到更多的意见。 另外,有人尝试过类似的东西吗? 提前致谢。 编辑: 感谢ereOn。 我没有意识到sqlite3_interrupt的存在。 这可能回答我的问题。 现在,对于所有人来说,想知道在同一个线程的I / O期间如何(以及为什么)要做一些后台处理。 不幸的是,很多人都不熟悉所谓的“重叠I / O”。 http://en.wikipedia.org/wiki/Overlapped_I/O 使用它可以asynchronous地发出I / O操作,并且调用线程不会被阻塞 。 然后使用完成机制之一接收I / O完成状态:等待事件,排队到APC中的新例程或完成端口。 使用这种技术不需要创build额外的线程。 实际上创build线程的唯一真正的合法化是当你的瓶颈是计算时间(即CPU负载),并且机器有几个CPU(或核心)。 而创build一个线程只是为了让它在大多数时间被操作系统阻塞 – 这是没有道理的。 这导致操作系统资源的不合理浪费,使程序复杂化(需要同步等)。 不幸的是,并不是所有的库/ API都允许asynchronous操作模式,因此创build额外的线程必然是邪恶的。 EDIT2: 我已经find了解决scheme,thansk ereOn。 对于所有那些坚持认为在“等待”I […]

不同版本的C ++库

在vista上使用Visual Studio 2008编译一个简单的C ++项目后,在原有的vista机器和其他Vista计算机上运行正常。 但是,将其移动到XP盒将导致错误消息:“应用程序无法启动,因为应用程序configuration不正确”。 我有什么要做,所以我编译的EXE在XP和Vista上工作? 几个月前,我也遇到了同样的问题,只是在项目上修改了一些设置,但我不记得我改变了哪些。

如何把一个c + +可变数据放入system()函数

看看下面的代码! 你会明白我想要什么: #include <iostream> #include <windows.h> using namespace std; int main() { cout << "name the app u want to open"; string app; cin >> app; system("start app"); // I know this will not work! But how to make it will? return 0; } 我希望你能理解我的问题。 如果没有,请在下面评论。

MSVC上的双字节编码(std :: codecvt):引导字节无法识别

我想在Microsoft标准库实现(MSVC11)中使用std::codecvt<wchar_t, char, std::mbstate_t>::in()将双字节代码页中编码的string转换为UTF-16string。 例如,考虑以下程序: #include <iostream> #include <locale> int main() { // KATAKANA LETTER A (U+30A2) in Shift-JIS (Codepage 932) // http://msdn.microsoft.com/en-us/goglobal/cc305152 char const cs[] = "\x83\x41"; std::locale loc = std::locale("Japanese"); // Output: "Japanese_Japan.932" (as expected) std::cout << loc.name() << '\n'; typedef std::codecvt<wchar_t, char, std::mbstate_t> cvt_t; cvt_t const& codecvt = std::use_facet<cvt_t>(loc); wchar_t out = 0; […]

如何防止控制改变Z命令?

我有.Net中的用户控件,我在WndProc中使用命中testing来允许在运行时用鼠标调整它的大小。 问题是,在命中testing成功后(鼠标按下,拖动resize,鼠标释放),控件以Z顺序向上跳,并将其废弃在窗体中。 我需要命中testing,因为它是一个非常自定义的控件。 WndProc有没有办法阻止控件改变它的Z顺序? 谢谢。 命中testing代码: protected override void WndProc(ref Message m) { if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) { Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16); Hit = this.PointToClient(Hit); int DistToBorder = 5; if (Hit.X < DistToBorder) { if (Hit.Y < DistToBorder) { m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT; return; } if […]