Articles of c + +

DirectX桌面

我想为使用DirectX的Windows 7制作animation桌面背景。 我正在使用C#,SlimDX和一些Windows API函数的P / Invoke导入。 我并不擅长使用本机Windows编程,但是我在网上有一个捅,我相信我需要做的是: 1)find包含dekstop壁纸的窗口的句柄,将其挂接到DirectX设备并绘制到其中。 2)制作一个新的输出窗口,并将其插入到桌面壁纸的上方,但在桌面图标的下方。 我已经尝试了这两个,但似乎都没有工作。 如果我从GetDesktopWindow()返回的句柄开始浏览窗口的层次结构,我可以去Desktop – > WorkerW – > SHELLDLL_DefView – > SysListView32。 如果我将DirectX设备连接到此句柄,则可以绘制整个桌面,但也会覆盖这些图标。 如果我创build一个Windows窗体,使用SetParent()将它的父窗体设置为SHELLDLL_DefView,然后使用SetWindowPos来播放它的Z顺序,我似乎只能把它放到桌面壁纸的后面或桌面+图标的前面。 它看起来好像桌面壁纸是包含图标的文件夹视图的背景,因此我正在尝试做的事情无法正常工作。 唯一的解决scheme就是不使用桌面上的图标,或find一些替代scheme,例如覆盖桌面,然后覆盖一个包含某个文件夹内容视图的透明窗口。 有没有人知道我应该做什么,甚至不知道我想做什么是可能的? 看来你可以使用GDI(因为我相信wxSnow程序)可以绘制到桌面背景,而且我已经看到类似于我在Windows XP下使用DirectX壁纸模式所做的VLC媒体播放器的东西(有趣的是,我似乎无法让我的系统上启用此选项)。 谢谢!

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]

getaddrinfo内存泄漏

我有这个代码获取有关IPv4地址的信息: struct addrinfo hints, *info = NULL; char addr4[INET_ADDRSTRLEN]; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = AF_INET; if (!getaddrinfo(argv[hostPara], NULL, &hints, &info)) { inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr, addr4, INET_ADDRSTRLEN); } if (info != NULL) { freeaddrinfo(info); } 但如果我testingargv [hostPara]是“www.google.com”我从valgrind得到这个: ==3632== 168 bytes in 1 blocks are still reachable in loss record 1 of 1 […]

Canot编译使用boost的odeint的C ++

我在Ubuntu 12.04上,并且已经在/ usr / include中有了一些提升。 我做了一个 sudo apt-get install libboost-all-dev 并且也安装了很多文件。 我不想删除这个提升并从源代码安装,因为其他几个软件包依赖于Ubuntu的版本。 这是我想要运行的示例代码: #include <iostream> #include <boost/numeric/odeint.hpp> using namespace std; using namespace boost::numeric::odeint; typedef vector< double > state_type; const double sigma = 10.0; const double R = 28.0; const double b = 8.0 / 3.0; void lorenz( state_type &x , state_type &dxdt , double t […]

使用Opencv直接从networking摄像头获取灰度图像

由于在我的embedded式应用程序中,我需要灰度图像,为了节省时间,我试图直接从networking摄像头获取帧,而不需要从RGB格式转换中获取帧。 我find的例子获取RGB中的帧,然后将其转换 cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY) 谢谢。

如何指定在Linux中使用哪个接口

是否有可能绑定一个udp套接字到一个特定的接口,所以它通过该接口发送数据? 我有一个应用程序使用多个Udp套接字来发送数据,它运行在具有多个接口的机器上。 我知道可以通过使用下面的代码来指定接口名称: int UdpSocket::open(const char *interface) { send_fd_ = ::socket(AF_INET, SOCK_DGRAM, 0); if (send_fd_ < 0) { perror("socket"); return -1; } int val = 1; int rc = ::setsockopt(send_fd_, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); if (rc < 0) { perror("sesockopt"); close(); return -1; } unsigned char ttl = 16; rc = ::setsockopt(send_fd_, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, […]

为MPC6050编写驱动程序i2c

我是C新手,我尝试写一个MPC6050加速计的驱动程序。 (Android 4.2.2的内核3.4)。 这是这个问题的下列。 这个页面和这个帮助我,但我不能使用驱动程序呢: arch/arm/mach-sun7i/core.c:77:44: warning: 'sun7i_i2c_platform_data' defined but not used [-Wunused-variable] arch/arm/mach-sun7i/core.c:136:41: warning: 'sun7i_i2c_platform_device' defined but not used [-Wunused-variable] 我正在处理/ANDROID/lichee/linux-3.4/arch/arm/mach-sun7i/core.c文件。 (相当于board-machine.c) 我粘贴了每个结构基础的结构。 初始化函数是,我希望确定,像这样: /* ACCELEROMETER*/ #include <linux/i2c-gpio.h> #include <linux/mpu.h> #include <linux/i2c.h> #include <mach/i2c.h> #include <mach/gpio.h> #define I2C_SDA TWI_LCR_SDA_EN #define I2C_SCL TWI_LCR_SCL_EN /* * /////////// from linux/i2c-gpio.h ////////// * struct i2c_gpio_platform_data { unsigned int […]

我怎么知道一个进程正在运行的核心?

我目前正在开发一个关于在linux环境下将进程设置为一个核心的项目。 我使用sched_setaffinity来完成这项工作,我想知道是否有一些由linux提供的函数来获取进程运行的核心。 我使用顶级命令,并发现它可以得到这个信息使用j选项。 所以我相信有一些方法可以在用户空间获得这个信息。

简单的C代码可以在HPUX上正常工作,但是Linux上的段错误。 为什么?

我很长时间没有做过任何严肃的C,希望能够快速解释一下。 以下代码在HP / UX上编译并运行良好。 它在GCC 4.3.2上编译没有任何警告(甚至是在gcc-Wall中),但在Linux上运行时却是segfaults。 谁能解释为什么? #include <stdio.h> int main() { char *people[] = { "Abigail", "Bob" }; printf("First: '%s'\n", people[0]); printf("Second: '%s'\n", people[1]); /* this segfaults on Linux but works OK on HP/UX */ people[1][0] = 'R'; printf("First: '%s'\n",people[0]); return(0); }

如何将目录path转换为唯一的数字标识符(Linux / C ++)?

我正在调查的方式采取一个目录(文件夹),并派生某种forms的唯一的数字标识符。 我调查过“string哈希”的方法,但是, 鸽子洞原则意味着永远不可能为每一个string派生一个真正唯一的数字。 string到唯一哈希是不好的。 我最近一直在调查其他方法来实现我的目标,因此有以下问题要问: 目录时间戳 – 他们有多“独特”? 这里所描述的“stat”报告的时间戳记是什么样的(第二篇文章)? 如果分辨率足够小,是否有可能多个文件夹在Linux系统上共享完全相同的时间戳? 如果任何人有其他方法/技术,他们想分享,我会很高兴听:) 编辑1为了澄清我的用例,以回应迄今为止发布的答案:我正在Android平台上工作,所以文件系统没有链接到任何其他(除了Micro SD卡等可移动媒体除外)。 我将每个path插入数据库,但试图避免查询表时string比较。 地图/ hashmaps的使用不是一个选项在这里。 是的,path本身是唯一的,但理想情况下,我需要一个数字标识符,可以用来查询表,而不是path本身。 每个path的标识符也必须是唯一的。 我已经用std :: collat​​e进行了实验,但是发现哈希中有很多碰撞(一个数据集有20,000条path,大约有100个碰撞)。 更令人惊讶的是,每次我的应用程序运行时,哈希似乎都大不相同。 我想知道它是否以某种方式播种? 非常感谢,P