显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 
 
 
 

[置顶] 关于mihooke这个人

2015-4-30 23:20:51 阅读73 评论0 302015/04 Apr30

本人网名Mihooke,源自航海王里的原七武海之一"鹰眼"---乔拉可尔·米霍克,甚喜之,遂取之音译英文于自用。

Mihooke是茫茫猿类中的一枚C++ developer ,目前正在成长中,努力学习各种技术!

联系我:

QQ:826457306E-mail:sadandeduoluozhich@163.com         mihooke@hotmail.com

技术宅们,有兴趣一起交流吧!

作者  | 2015-4-30 23:20:51 | 阅读(73) |评论(0) | 阅读全文>>

一个解决方案内添加多个工程进行调试

2016-12-5 21:59:09 阅读0 评论0 52016/12 Dec5

像上节我说的管道程序,因为有server端程序和client程序,如果在编译器中打开多个解决方案会影响调试的速度,很是浪费时间,我收到有网友的提问,便把一个解决方案内添加多个工程文件进行调试的步骤说下。

拿命名管道的程序来说,首先建立server端的工程:

 这里我建立的是名为namedpipe解决方案,并且工程名字和方案名字一样,接下来:

点击【新建项目】

新建步骤和正常创建一样。这时,namedpipe解决方案下就有2个项目了:

编写好代码,编译,在此程序中,我们应该先启动server端程序,在namedpipe项目名称上,右键,选择【调试】->【启动新实例】

server端程序启动。接下来,在client项目名称上,右键,选择【调试】->【启动新实例】,那么2个程序就都启动了,可以直接进行调试了。

作者  | 2016-12-5 21:59:09 | 阅读(0) |评论(0) | 阅读全文>>

命名管道(Windows)

2016-12-2 18:41:42 阅读0 评论0 22016/12 Dec2

HANDLE CreateNamedPipe(

LPCTSTR lpName,                             /*管道名称*/

DWORD dwOpenMode,                        /*管道打开模式*/

DWORD dwPipeMode,                        /*管道的模式*/

DWORD nMaxInstances,                   /*管道能够创建的最多实例*/

DWORD nOutBufferSize,                 /*输出缓存大小*/

DWORD nInBufferSize,                    /*输入缓存大小*/

DWORD nDefaultTimeOut,                  /*管道的默认等待超时*/

LPSECURITY_ATTRIBUTES lpSecurityAttributes  /*安全属性*/

);

创建命名管道和打开已经存在的命名管道,其中lpName为管道名称,dwOpenMode为创建方式,可以是下面值的组合:

PIPE_ACCESS_INBOUND:管道只能用作接收数据。

PIPE_ACCESS_OUTBOUND:管道只能用作发送数据。

作者  | 2016-12-2 18:41:42 | 阅读(0) |评论(0) | 阅读全文>>

匿名管道(Windows)

2016-12-2 18:37:44 阅读0 评论0 22016/12 Dec2

BOOL CreatePipe(PHANDLE hReadPipe, // 指向读句柄的指针

 PHANDLE hWritePipe, // 指向写句柄的指针

 LPSECURITY_ATTRIBUTES lpPipeAttributes, // 指向安全属性的指针

 DWORD nSize // 管道大小);

管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。匿名管道(Anonymous Pipes)是在父进程和子进程间单向传输数据的一种未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。

管道服务器将lpPipeAttributes 指向的SECURITY_ATTRIBUTES数据结构的数据成员bInheritHandle设置为TRUE,那么CreatePipe()创建的管道读、写句柄将会被继承。lpPipeAttributes一般可以这么用:

SECURITY_ATTRIBUTES sa;

sa.bInheritHandle = TRUE;

sa.lpSecurityDescriptor = NULL;

sa.nLength = sizeof(SECURITY_ATTRIBUTES);

if (!CreatePipe(&hRead, &hWrite, &sa, 0))

作者  | 2016-12-2 18:37:44 | 阅读(0) |评论(0) | 阅读全文>>

巧用set容器

2016-11-20 8:58:04 阅读1 评论0 202016/11 Nov20

问题描述:目录下不确定有1.bmp 2.bmp 3.bmp.......的一个或多个,也不确定有没有,在不知道的情况下使得从1.bmp插入该目录中,比如,如果有2.bmp,再次插入的时候需要是1.bmp;如果有1.bmp,再次插入的时候是2.bmp

用set容器解决,可以遍历把所有的bmp保存在一个set中,然后循环插入set中1.bmp 2.bmp 3.bmp……,用pair保存插入的返回值,如果是true,则表示目录下不存在,如果是false,表示已存在,继续下一次循环:

set<CString> setFile;

pair< set<CString>::iterator, bool > setPair;

for (int i=1; i<nSize+2; i++)

{

CString csBmpName;

csBmpName.Format(_T("%d.bmp"), i);

setPair = setFile.insert(csBmpName);

if (setPair.second)

{

nRet = i;

break;

}

}

作者  | 2016-11-20 8:58:04 | 阅读(1) |评论(0) | 阅读全文>>

fstream读写bin文件

2016-9-1 20:56:42 阅读7 评论0 12016/09 Sept1

/*CData是一个存储数据的类*/

CData d;

ostream writeBin("data.bin");

writeBin.write(reinterpret_cast<char *>(&d), sizeof(d));

istream readBin("data.bin", ios::binary);

while(readBin.read(reinterpret_cast<char *>(&d), sizeof(d)))

{

cout<<d<<endl;

...

}

/*text文件的读写*/

ostream writeData("data.txt");

writeData<<d<<endl;

istream readData("data.txt");

cout<<readData.rdbuf();

可以看到text是直接把数据读到流中就可以了;bin二进制文件需要用write和read函数来读写了

作者  | 2016-9-1 20:56:42 | 阅读(7) |评论(0) | 阅读全文>>

a bug in xxx.exe or any of the dlls

2016-8-29 16:36:27 阅读7 评论0 292016/08 Aug29

取消登录按钮按过之后,本来以为是析构出问题了。

问题源头:

1、你的程序可能有能接收输入文字的部分,用到了输入法

2、搜狗输入法通过hook或驱动将自己的代码映射到了所有进程的地址空间,你的程序自然也要加载搜狗的代码。

看到没,上面的两个dll都是搜狗的dll,被程序加载了,然而这两个dll都不不是被正确的方式加载,所以出错。

作者  | 2016-8-29 16:36:27 | 阅读(7) |评论(0) | 阅读全文>>

QVector index out of range

2016-8-29 16:24:33 阅读3 评论0 292016/08 Aug29

代码中要解析XML文件,得到XML文件中的节点数,通过打断点调试看到QVector的个数不足节点总数

问题源头:XML文件格式错误,导致读取节点不完整

作者  | 2016-8-29 16:24:33 | 阅读(3) |评论(0) | 阅读全文>>

MFC画笔画刷简单使用

2016-6-10 17:47:13 阅读10 评论0 102016/06 June10

画线步骤:获取鼠标按下的消息->

取得当前的点->

在DC上获取DC->

MoveTo到当前的点->

LineTo到鼠标松开的点

/*CDC画线*/

CDC *hDC;

hDC = GetDC();

hDC->MoveTo(m_cpoint);

hDC->LineTo(point);

ReleaseDC(hDC);

/*CClientDC画线*/

CClientDC ccDC(this);

ccDC.MoveTo(m_cpoint);

ccDC.LineTo(point);

/*CWindowDC画线*/

CWindowDC cwDC(this);

cwDC.MoveTo(m_cpoint);

cwDC.LineTo(point);

/*画笔画线*/

CPen cpens(PS_SOLID, 10, RGB(100, 100, 0));

CClientDC ccDC(this);

CPen *pOldPen = ccDC.SelectObject(&cpens);

ccDC.MoveTo(m_cpoint);

作者  | 2016-6-10 17:47:13 | 阅读(10) |评论(0) | 阅读全文>>

MFC设置窗口背景为图片

2016-5-20 22:31:50 阅读12 评论0 202016/05 May20

在rc中导入bmp图片,图片ID为IDB_PIC_BITMAP

在OnPaint成员函数中插入代码:

void CMy20160515_3backgroDlg::OnPaint()

{

if (IsIconic())//该窗口是否是最小化的窗口

{

CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

作者  | 2016-5-20 22:31:50 | 阅读(12) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 

发现好博客

 
 
列表加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 

标签

 
 
数据加载中...
 
 
 
 
 
 
 

北京市 海淀区 摩羯座

 发消息  写留言

 
QQ826457306
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016

注册 登录  
 加关注