自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 异步I/O(4)完成端口

使用设备内核对象使用设备内核对象使用事件内核对象 使用事件内核对象可提醒I/O 可提醒I/OI/O完成端口I/O完成端口是在异步I/O中使用较多的一种异步方式前面使用的三种异步I/O操作都是使用的串行模型来进行的异步I/O操作 而完成端口才是真正使用的并行模型来进行的异步I/O操作在使用完成端口时会创建 设备的队列 设备操作的对列 线程池HANDLE WINAPI CreateIoC

2017-05-27 15:14:30 412

原创 异步I/O(3)可提醒I/O

进行异步I/O的四种方式 1. 使用设备内核对象使用设备内核对象 2. 使用事件内核对象使用事件内核对象 3. 可提醒I/O 4. I/O完成端口I/O完成端口在前面所使用的两种异步I/O方式都是 发送一个请求 处理其他的逻辑 进行等待,判断请求是否完成可提醒I/O的操作方式是 发送请求 在请求完成后,操作系统自动提醒可提醒I/O是通过APC机制完成的 APC机制的详细过程不

2017-05-27 12:40:35 517

原创 异步I/O(2)使用事件内核对象

进行异步I/O的四种方式 1. 使用设备内核对象使用设备内核对象 2. 使用事件内核对象 3. 可提醒I/O可提醒I/O 4. I/O完成端口I/O完成端口在进行异步I/O操作的时候HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ D

2017-05-27 10:32:39 337

原创 双向链表

双向链表的操作与单链表的基本相似typedef struct DoublyListNode{ int data; DoublyListNode *prev; DoublyListNode *next;}Node;class DoublyList{public: DoublyList(); ~DoublyList(); void CreateN

2017-05-20 18:52:22 217

原创 单链表的使用

封装的单链表方法typedef struct ListNode{ ListNode *next; int data;}node;class list{public: list(); ~list(); //构造节点时使用尾插法 void CreatNode(int *arr, int n)const; bool IsEmpty()cons

2017-05-20 17:00:20 239

原创 ListCtrl的消息响应&MFC基础

MFC是对Win32API的一个封装.通过继承体系大大方便了我们的使用,在创建一个MFC对话框程序的时候默认会生成两个类C___App 它是我们的应用程序类,继承自 CWinApp 类,里面的InitInstance就相当于WinMain,是一个入口函数.和 WinMain 一样, 是被动调用的. C___Dlg 它是我们的应用程序主窗口类,继承自 CDialogEx 类 CDialogEx

2017-05-20 14:32:55 1885

原创 异步I/O(1)使用设备内核对象

进行异步I/O的四种方式 1. 使用设备内核对象 2. 使用事件内核对象使用事件内核对象 3. 可提醒I/O可提醒I/O 4. I/O完成端口I/O完成端口异步I/O的操作过程: 当我们使用异步I/O操作时,我们的程序不会卡死在文件操作的地方.如当我们使用CreateFile打开一个个文件时,它会给操作系统发送一个打开文件的请求然后就直接返回,不会等待文件打开是否成功.此时我们可以进行其

2017-05-20 13:38:07 438

原创 Windows I/O操作

在windows程序中,基础的运行单位为线程,为没个线程分配一个处理器,可以让系统执行多个操作,当线程进行I/O操作时会被挂起,从而影响性能,为解决这类问题,windows使用一套非常好的机制:I/O完成端口.因为现在计算机的瓶颈主要是在磁盘操作这块,磁盘的读取速度是以MB为单位的,,如果说我们需要读取1GB的文件大小,此时所耗费的时间是非常长的.如果执行该操作的线程需要等待该操作完成的话,无疑是很

2017-05-13 13:37:50 1220

原创 Windows Data Type

windows中的数据类型是将C语言的基础数据类型进行再包装产生的,并不是一种新的数据类型.它只适用于windows的SDK中,并不在其他地方通用. 上面是windows将c语言的基础数据类型进行再包装后产生的数据类型..另外windows还包装了一些结构体和一些权限操作的数据类型数据类型的本质其实上是我们可以操作内存的大小内存大小的单位 bit内存中最小的单位 byte 1byte =

2017-05-06 16:18:14 338

原创 windows编程简介

在操作系统没有出来之前.我们写的程序是直接和硬件打交道的,这个阶段的程序通用性是非常差的.. 它可能只能在一台电脑或者一类电脑上面运行.因为每台电脑的硬件情况都有可能不同. 在windows出来之后,程序的通用性得到了大大的提升.windows操作系统将硬件和软件隔离..我们所写的程序不用在关注硬件是怎么样的.我们所写的软件调用OS的API,再通过该API来操作硬件windows经过三十多年的发

2017-05-05 13:56:37 755

原创 TabCtrl

TabCtrl中的没一个选项卡都是一个窗口,新建一个选项卡就需要新增一个dialog添加的dialog需要将其属性设置为一个子窗口.将其边框设置为none在初始化时为主窗口添加选项卡 m_tab.InsertItem(0, L"Page1"); m_tab.InsertItem(1, L"Page2");这只是新建了两个选项卡..如果想要将我们写的子窗口绑定到主窗口中..需要为子窗口新

2017-05-04 18:13:50 507

原创 RichEdit

富文本框,,可以对颜色和字体进行设置的文本框颜色设置void CRichEditDemoDlg::OnBnClickedBtnColor(){ // TODO: 在此添加控件通知处理程序代码 CHARFORMAT cf = { 0 }; cf.cbSize = sizeof(CHARFORMAT); m_edit.GetSelectionCharFormat(cf);

2017-05-04 15:25:01 241

原创 TreeControl

这个树控件类似于文件夹的结构,有一个跟节点,后面有子节点和叶节点,删除一个子节点后面的也节点也会被删除节点的增添void CTreeCtrlDemoDlg::OnBnClickedBtnAdd(){ CString strInput; GetDlgItemTextW(IDC_EDIT_INPUT, strInput); //获取节点的选中状态,没有选中就为跟节点,否则为子节

2017-05-04 15:14:01 448

原创 ListControl

ListControl这个控件中有四种模式.大图标.小图标,列表,以及报表模式列表模式与报表的不同是列表没有表头在使用报表模式的时候.表头需要我们在初始化的时候进行插入m_list.InsertColumn(0, L"第一列",LVCFMT_LEFT,100);m_list.InsertColumn(1, L"第二列", LVCFMT_LEFT, 100);上面的参数分别代表新列的索引,名称,对齐

2017-05-04 14:43:38 319

原创 HotKey

热键控件,对应与我们长用的快捷键.我们可以设置不同的热键对应与不同的功能对热键进行设置时通过GetHotKey,里面接收两个参数的引用.第一个为设置的按键的虚拟键代码,第二个为按键组合的模式,具体情况可查阅MSND获取到热键的具体数据之后要对该热键进行注册..里面的参数为窗口句柄,热键ID,热键组合模式.以及热键虚拟键代码 WORD wVk, wMod; m_HotKey.GetHot

2017-05-04 13:51:32 1107

原创 SliberControl

滑块控件常用与播放器中进度的控制和声音的调节 在操纵滑块时可以先对滑块控制的范围进行设置,默认的范围为0-10m_sliber.SetRange(0, 100);滑块消息的响应和滚动条是一样的.需要我们自己实现滑块移动时的消息响应方式void CSliberDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){

2017-05-04 13:32:51 279

原创 SpinControl

这个控件一般会和EditControl结合起来使用. 在使用时应该先拖放EditControl在拖放这个控件,因为该控件中的属性可以将上一个控件与其绑定.它的使用非常简单,只需要对其范围进行初始化即可CSpinButtonCtrl *pSpinHex = static_cast<CSpinButtonCtrl*>(GetDlgItem(IDC_SPIN_HEX));pSpinHex->SetRan

2017-05-03 19:57:55 231

原创 ScrollBar控件

当在使用滚动条控件时,必须要对滚动条操作的消息进行响应 WM_HSCROLL为滚动条的消息响应.. 因为我们对滚动条的操作主要是对别的控件进行控制,比如EditControl.所以滚动条的消息响应方式需要自己来实现在响应滚动条消息之前,要对滚动条的类型和范围进行初始化 SCROLLINFO scrollinfo = { 0 }; scrollinfo.cbSize = sizeof

2017-05-03 19:47:49 823

原创 comboBox&listBox

comboBox和listBox在使用时需要注意的地方主要是设置当前选中的位置..当我们进行增添或者删除后要有一个默认选中的位置int nIndex = m_cobDemo.AddString(strInput);m_cobDemo.SetCurSel(nIndex);nIndex = m_listDemo.AddString(strInput);m_listDemo.SetCurSel(nI

2017-05-03 18:49:10 521

原创 Check Box&Radio Button

check box是多选框, radio button是单选框 通过这两个控件对颜色以及形状做一个简单的控制 对颜色的绘制可以通过响应其绘制的消息,也可以通过响应擦除的消息来实现 WM_ERASEBKGND为擦除背景的消息..这个消息会在每次窗口进行重绘之前响应如果我们对多选框或者单选框的控件添加了变量,可以通过 m_chk_red.GetCheck()来获取该控件是否被选中,如果被选中,

2017-05-03 17:41:56 512

c++经典面试100题

包含100道经典的c++面试题, 准备面试的同学自取.233333

2018-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除