- 博客(160)
- 资源 (10)
- 收藏
- 关注
原创 CRegKey学习
/* 表示注释,比如你哪一行注册表数据不想用了,又怕今后忘记了,就可以在该行前面加上REM,起到保留作用*/#include "stdafx.h"#include using namespace std;#include int _tmain(int argc, _TCHAR* argv[]){CRegKey objRegkey;int nRet;nRet = objRegkey.Open(HKE
2012-02-25 17:27:21
1921
原创 网络中下载文本文件误区
文本文件在windows上面回车为 \r\n 读写文件的函数充当的角色是吧\n翻译\r\n把\r\n翻译\n 网络传输下载中服务器用二进制打开了文本文件,\r\n全部都出来,如果写入文件时候用不是二进制写入,那么\r\n被翻译成\r\r\n多出一个\rMAC的换行是\r window
2011-11-22 14:48:18
646
原创 磁盘存储原理
对于连续的空闲空间,数据存储时是按柱面->磁道的顺序来进行,先把同一柱面的所有磁道都写满才进入下一柱面的磁道,这样进行也是考虑读写性能的问题,在同一柱面内进行读写磁头不需要进行机械移动,不同磁头的切换通过电子开关来完成,速度很快。有连续空闲空间的情况下,相邻数据一般是存放在同一柱
2011-08-19 17:57:56
1232
原创 MFC 文件夹
// MFC_CONSOLE.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeint main(int argc, char* argv[])
2011-08-15 03:38:57
687
转载 winsock 模型 据我所知12000个左右,以前看到过,在哪里看的忘记了 evnet
重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。采用事件对象通知的重叠I/O模型是不可伸缩的,因为针对发出WSAWaitForMultipleEvents调用的每个线程,该I/O模型一次
2011-08-12 10:29:19
908
转载 setsockopt
我找到一篇中文的,希望你能用的上。 简述: 设置套接口的选项。 #include int PASCAL FAR setsockopt( SOCKET s, int level, int op
2011-08-10 22:12:43
639
转载 select
elect在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件
2011-08-10 21:53:29
781
原创 bind 最大线程 端口复用
所谓绑定是指别人连接我只能通过我所绑定的端口,其实是说,你现在有这个端口开放了,人家可以连接到你的服务,也可以进行数据传输,但是也不一定要使用此端口进行传输,可能此端口只用于控制信息的传输端口 = 端口 + Ip TCP 三元组UDP 2元组
2011-08-10 19:35:57
2285
原创 MSG_PEEK
因为UDP是按数据包接收的,我们在接收之前并不知道这个数据包有多大。一个策略是,我们准备足够大的应用程序缓存以免出错,但是这个“足够大”的概念是建立在我们对传送的数据事先有了解的情况下,比如是我们自己设计服务器端和客户端并且制定应用层协议;另外一种策略是,将一个数据包的相关信息记
2011-08-10 15:49:40
8421
原创 MSG_OOB 带内带外消息
带外数据标记。现在进程使用以MSG_OOB 为参数的send()函数写入一个单字节的"带外数据",包含一个ASCII 字符"a":send(fd, “a”, 1, MSG_OOB);TCP 将数据放在下一个可用的发送缓冲区中,并设置这个连接的"紧急指针"(ur
2011-08-10 14:09:59
7982
原创 WinSock1.1
recv不等待是因为你使用的是非阻塞socket,换而你使用阻塞socket一样需要等待。recv的recvfrom是可以替换使用的,只是recvfrom多了两个参数,可以用来接收对端的地址信息,这个对于udp这种无连接的,可以很方便地进行回复。而换过来如果你在udp当中
2011-08-10 13:38:04
1090
转载 关于内存管理,理解
垃圾收集的算法分析 Java语言规范没有明确地说明JVM使用哪种垃圾回收算法,但是任何一种垃圾收集算法一般要做2件基本的事情:(1)发现无用信息对象;(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。 大多数垃圾回收算法使用了根集(root
2011-08-09 18:13:00
618
原创 GDI GDI+ 切换
当然希望可以使用GDI+来完全代替GDI,再不济也只需要从GDI对象转到GDI+对象。但是就是有那么些工程,又要新技术新特性、又希望快速开发、又不肯丢弃旧版本的已有的功能。没办法,只能缝缝补补,咔哐碙啌...一、CDC到Graphics只要这样:Graphic
2011-08-09 02:24:32
939
原创 关于双缓冲理解
双缓冲几个重要 注意点:1 不直接绘制在DC上,而是先绘制在内存DC然后利用BitBlt块传输效率高2 尽量限制背景重绘,背景的重绘导致两种颜色切换,会产生闪烁效果。 先擦出背景,在绘制图像做法步骤:1创建CompatibleDC2创建位图Compat
2011-08-09 01:06:10
735
原创 一个最简单方法去掉边框
void CMainFrame::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp){ // TODO: 在此添加消息处理程序代码和/或调用默认值 // CFrameWnd::O
2011-08-08 23:28:07
2078
原创 CMenu美化 和CButton
CButton可以利用CBitmapButton测试。CMenu 如果重绘效果更好 CMenu *pSubMenu=m_Menu.GetSubMenu(0);//获得子菜单(如果有)0表示索引,对应“文件”菜单 for(int i=0;i {
2011-08-08 14:06:59
2071
原创 WM_SZIE WM_PAINT
如果不设置窗体CS_VREDRAW CS_HREADRW 那么两个消息没有关系,窗体变化不会重新绘制。如果有那么Onsize onerasebackground onpaint 一般可以在OnEraseBackgroud重回之背景还一再在OnPant但是OnPaint
2011-08-08 11:36:36
709
原创 MFC 单文档创建过程
点击ON_FILE_NEW -----------> CWInApp::OnFileNew ({ m_pDocManager->OnFileNew) m_pDocManager.OnFileNew { 判断其m_tempList是不是空,然后判断是不是>1 然后用模板CDo
2011-08-07 11:11:36
3026
原创 OnCtrColor
Dialog绘制调用OnCtrColor先绘制Dialog背景,在依次绘制控件,也调用OnCtrColor对应Win32 WM_CTLCOLOR messaafx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd,
2011-08-06 23:59:19
965
原创 OnCreate 初始化未完全,解决方法
OnCreate是函数执行WM_CREATE消息,这个时候窗体创建完毕了,但是相关的状态栏,工具栏等不一定创建成功。我们可以在OnCreate中发送一个消息。这个时候不能用SendMessage这个会执行发送消息完后才返回。PostMessage放置到消息队列中,自己
2011-08-06 22:25:59
980
原创 MFC 改变窗口外观
1 在PreCreateWindow中改变,窗体模式,标题,状态,透明等。 标题注意下,标题默认是VIEW的2 在OnCreate后用GetWindowLong(hWnd,GWL_STYLE,WS_XXX);3如果要改变光标图标等,可以在即在PreCreateWindo
2011-08-06 21:32:09
1313
原创 对话框扩展 OnCreate OnInitialDialog 控件焦点,按键回车变化
利用分隔符,获取切割部分大小 用静态控件例如图像控件代替。(获得LABEL) 拉成一条直线,然后获得大小,top==down 是裁剪的位置。记录LagerRect SmallRect利用SetWindowPos 相比MoveWindow 有设定Z序列的功能。
2011-08-06 15:51:29
1014
原创 CStatic
静态文本,label picxbox静态控件默认不可以接收消息,其ID是一样的,不能增加消息,想增加消息,改变IDC,并且改变Notify属性后才可以接受消息,在创建时候传参SS_NOTIFY,或者向导中选择GetDlgItem 返回CWnd指针,atoi itoa
2011-08-06 15:05:31
575
原创 CDialog 模态对话框 非模态
模态对话框可以用局部变量,DoModal 点击OK CANCLE 窗口被销毁 EndDialog( int nRetCode);非模态局部变量是不可以的 Create Show 点击OK CANCLE窗口被隐藏了,没有销毁 OnOK 重载OnOk不要调用基
2011-08-06 13:39:08
1178
原创 CreateWindow
WS_BORDER 创建一个有边框的窗口 WS_CAPTION 创建一个有标题栏的窗口 WS_CHILDWINDOW(or WS_CHILD)创建一个子窗口(不能与WS_POPUP一起使用) WS_CLIPCHILDREN 当在父窗口内绘制时,把子窗口占据的区域剪
2011-08-06 12:53:02
568
原创 CEdit创建
m_objCpointEditPostion.top = 0;m_objCpointEditPostion.left = 0;m_objCpointEditPostion.right = 200;m_objCpointEditPostion.bottom = 100;
2011-08-06 10:57:18
531
原创 更改消息路由Command
MFC中Command消息包含菜单工具栏等命令消息和控件的Notify消息,其消息流动比较复杂。大体概括如下,系统维护 窗口句柄和对象指针的表,VIEW或者Frame类产生消息找到相应的指针调用 OnCommand 其中改写了OnCommand函数的有CWnd CFra
2011-08-06 10:35:25
552
原创 CMenu
Menu可以看做是一个2维的表子菜单1 子菜单2 子菜单3菜单项1菜单项2子菜单是一个PopUp是弹出菜单,不能响应消息,作用弹出子菜单下面的菜单项目CMenu.GetSubMenuCMenu.GetSubItem
2011-08-05 20:41:47
1999
原创 VC 文字处理
//实现插入符打字,退格回车的思路。用的是TextOut 和DrawText设定的矩形会将字体截断,可以结合Timer实现LRC字幕的变化效果。 CClientDC dc(this); if(nChar ==0x0D) { m_cposCaret.x =0
2011-08-05 17:04:59
746
原创 线程同步 线程死锁
内核对象 互斥对象 事件对象(自动) 多个进程内线程 慢 但是有超时用户对象 临界区 速度快,同一个进程内 但是容易死锁,因为没有超时线程1 得到A 再得到B线程2 得到B再得到A线程1entercriticalSection Aen
2011-08-04 19:46:31
575
原创 内核对象 Event
人工重置Event CreateEvent(NULL,TRUE,TRUE) 但EVNET有效时候,所有调度线程可用,因为操作系统没有保证 下面是原子操作,可能大家都可以执行WaiteForSignalObjectReset()例如单核模式下,每次可以运行一个线程。线
2011-08-04 19:21:45
642
转载 vc++ 向其他进程注入代码的三种方法
vc++ 向其他进程注入代码的三种方法 2008-11-21 07:32:31| 分类:C VC++ | 标签:|字号大中小订阅 导言:我们在Code project(www.codeproject.com)上可以找到许多密码间谍程
2011-08-04 15:07:03
4474
转载 进程权限
windows的每个用户登录系统后,系统会产生一个访问令牌(access token) ,其中关联了当前用户的权限信息,用户登录后创建的每一个进程都含有用户access token的拷贝,当进程试图执行某些需要特殊权限的操作或是访问受保护的内核对象时,系统会检查其acess to
2011-08-04 13:25:41
2250
原创 ini reg
GetPrivateProfile 可以写入自己指定的自己文件WriteProfileString //根据系统,选择到底写入注册表还是win.ini
2011-08-03 22:00:42
494
原创 C 语言文件存储 文本 2进制
都是2进制的方式存储在磁盘上面,是内存中数据在磁盘上的另一种方式。注意,选择合适的方式。文本:会转化字符,如10 如转化成 10 13回车会转化,长度增加 ,当读入时候遇到 10 13会合并(这种方式对于图片声音是灾难性的)2进制不转化按照自己存储,读写。
2011-08-03 17:44:43
620
转载 几种常见钩子 解释
从现在开始,介绍全部钩子类型,一共有15种。由于本人现在使用C#,所以将原文中的Function都翻译为了“方法”,实际上翻译为“函数”可能更准确。原文中的”callback function”翻译为“回调函数”。Each type of hook enables an ap
2011-08-03 01:20:25
1531
原创 键盘钩子修改键值
在修改键值的时候,需要挂住WH_GETMSG 挂住WM_KEYBORD是不可以的。一个按键 你会不清楚对方使用WM_KEYdwon KEYUP WM_CHAR哪个消息的,最好全部挂钩#define DLL_EXPORTS#include"keybo
2011-08-03 00:25:02
2038
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人