自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Windows核心编程_3.内核对象

设置句柄标识 SetHandleInf

2014-05-03 10:38:24 642

原创 Windows核心编程_2.ansi和unicode

WideCharToMultiByte int WideCharToMultiByte( UINT CodePage,         DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOO

2014-05-02 10:51:39 551

原创 Windows核心编程_1.错误处理

GetLastError 如果你的函数失败了,你可以通过此函数

2014-05-02 10:35:14 533

原创 vc安装hook

钩子的创建 钩子安装函数: HHOOK SetWindowsHookEx(   int idHook,        // hook type                      钩子的类型   HOOKPROC lpfn,     // hook procedure                 钩子的过程函数   HINSTANCE hMod,    // handle to

2013-10-25 16:52:33 724

原创 vc编写动态链接库

静态库和动态库  静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件);  动态库: 在使用动态库的时候,往往提供两个文件:一个因入库和一个DLL。因入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接

2013-10-24 20:46:21 681

转载 vc开发ActiveX控件

容器和服务器程序  容器应用程序时可以嵌入或链接对象的应用程序。Word就是容器应用程序。  服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。  ActiveX控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。    Dispatch maps调度映射,主要是MFC提供让外部应用程序可以访问控件的属性和方法 Event m

2013-10-24 13:56:24 796

原创 vc进程间通信

vc进程通信4种方式:1.前面的剪贴板2.匿名管道3.命名管道4.油槽 匿名管道 父进程 void CParentView::OnPipeCreate() {  // TODO: Add your command handler code here  SECURITY_ATTRIBUTES sa;  sa.bInheritHandle=TRUE;//指定匿名管道 句柄是否可以被继承

2013-10-21 16:23:26 764

原创 vc创建剪贴板

1.打开剪贴板OpenClipboard(), 2.EmptyClipboard()清空剪贴板获得剪贴板的权限 3.分配内存GlobalAlloc 4.加锁 得到分配内存的指针 6.复制数据到指针指向的内存中 5.解锁 6.设置剪贴板数据 void CClipboardDlg::OnBtnSend() {  // TODO: Add your control notificat

2013-10-21 14:38:33 747

原创 vc异步套接字

MFC 创建异步套接字的网络聊天程序 1.首先包含 winsock2.h 2.工程-设置 链接 ws2_32.lib 3.在app类的InitInstance()中加载套接字库 因为要用2.2的版本 所以AfxSocketInit()不用 不过AfxSocketInit加载1.1版本很方便 并且可以省去上面两步骤 BOOL CChat16App::InitInstance() {  W

2013-10-17 19:23:03 835

原创 vc线程同步

线程同步的另外两种方式 1.事件对象 2.关键代码段,即临界区.   1.事件对象:内核对象 包含三成员:使用计数,人工重置还是自动重置,有信号无信号 创建事件对象 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPTSTR l

2013-10-17 19:08:03 639

原创 vc多线程

一些概念 进程和线程的概念: 套用 孙鑫的来说 进程就好像一个手术室.线程就是里面的医生,线程当中一定有一个主线程也就是程序里的main或winmain.记住代码不是线程.代码相当于医生的手术方案,你完成了手术方案,你医生就完成工作了.  也就是说代码的结束相当于线程的结束.一个进程当中可以有1个以上的线程.当然在程序当中你必须自己创建新的线程咯. 我们可以当创建一个新线程为主刀医生叫一个新的

2013-10-14 18:12:15 565

原创 VC网络编程

ISO/OSI 7层:为的是解决因网络环境复杂的问题,从而划分为一个个的小模块. 从下往上说: 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层   TCP/IP模型 从下往上说: 1.网络接口层 2.网络层 3.传输层 4.应用层   先下机 明天补充

2013-10-13 18:43:45 743

转载 vc文档串行化

1.    CArchive在菜单打开保存时的代码  CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);  CArchive ar(&file,CArchive::store);  int i=4; char ch='a'; float f=1.3f;  CString str("http://www.sunxin.org")

2013-10-12 10:07:47 837

原创 vc对win.ini和注册表的 读与写

WinIni文件的读写 CWinApp::WriteProfileString xp的环境下写入注册表 CWinApp::GetProfileString   xp的环境下读取注册表 ::WriteProfileString Win32API xp的环境下写入c:\window\win.ini ::GetProfileString   Win32API xp的环境下读取c:\window\

2013-10-10 11:39:19 736

原创 vc创建文件对话框

1.先构造一个 CFileDialog对象 CFileDialog::CFileDialog CFileDialog(BOOL bOpenFileDialog,             LPCTSTR lpszDefExt = NULL,             LPCTSTR lpszFileName = NULL,             DWORD dwFlags = OFN_

2013-10-10 11:38:00 1003

原创 MFC加入滚动条

1. 可以在新建MFC程序时从CScrollView中派生类,也可以手动修改选择VC菜单项Edit-Replace 2. 第一步做好后,当你编译运行时,程序会出错!并且不会出现滚动条,我们还要在窗口创建完毕后,我们可以添加个虚函数OnInitialUpdate()。在OnInitialUpdate()调用SetScrollSizes函数设置滚动条范围,因为OnInitialUpdat

2013-10-05 16:47:01 1330

原创 VC绘图控制

VC颜色对话框 设置颜色对话框出初始选择的颜色,必须设置CC_RGBINIT标记. mcc.Flags|=CC_RGBINIT. 设置CC_FULLOPEN可以让颜色对话框全部展开 mcc.Flags|=CC_RGBINIT|CC_FULLOPEN. mcc.rgbResult保存了选择的颜色. 示例代码: void CGraphicView::OnColor() {  //

2013-10-02 20:31:31 583

原创 VC工具栏编程

工具栏编程 工具栏上的按钮ID与菜单项ID一样,因为工具栏是为了方便使用一些常用的菜单项命令. 工具栏删除按钮:按delete是没用的只是将按钮的图像删掉了,正确的方法应该是,用鼠标把想删除的按钮拖出去. 创建工具栏的方法: 1.创建工具栏资源 2.构造CToolBar对象 3.调用Create或CreateEx函数创建工具栏,并把它与已创建的CToolBar对象关联起来. 4.Lo

2013-09-30 15:23:53 828

原创 MFC定制应用程序外观

定制应用程序外观 1.在应用程序创建之前修改它的外观和大小 例如修改窗口大小 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {  if( !CFrameWnd::PreCreateWindow(cs) )   return FALSE;  // TODO: Modify the Window class or styles he

2013-09-29 20:01:36 682

原创 vc创建属性表单向导

属性表单    1.插入属性页资源。Insert->new Resource->Dialog    2.当选择Classwizard菜单时,系统提示是否为创建新的类,我们将其从CPropertyPage派生!这样可以为方便为其增加消息响应函数。   3.插入新的从CPropertySheet派生的类,在类中增加3个CPropertyPage的实例。   4.在view中增加菜单项,当点击

2013-09-24 17:56:54 782

原创 vc创建对话框

模态对话框的创建:  创建模态对话框要调用CDialog类的成员函数:DoModel(),创建一个模态对话框,其返回值作为CDialog类的另一个成员函数:EndDialog的参数,后者的功能就是关闭模态对话框。   Void CMyboleView::OnDialog(){                   CTestDlg dlg;//视类中源文件要包含这个类的头文件

2013-09-24 17:52:07 999

原创 VC菜单编程

菜单命令的路由 命令消息是由OnCommadn这个函数来处理的 当单击菜单项参数命令消息后。框架类会收到此条消息,然后框架类会把消息给视类。视类会查找自己是否对该消息作出响应,如果有,则进行相应的处理结束路由过程。没有则交给文档类,文档类也会查找是否对消息做出响应,作出了则结束,否则 又给视类,视类又给框架类,框架类又给应用程序类。 屏蔽菜单项,使之不能用  (需要在CMainFr

2013-09-16 20:35:39 689

原创 VC文本编程

VC创建插入符 CWnd::CreateSolidCaret

2013-09-09 20:42:09 637

原创 VC简单画图

1.新建单文档工程 2.首先在CDrawView中添加 private成员 CPoint  m_ptOrigin(用来记录原点的) 3.然后再VC的类向导中 添加 两个 消息 一个是 鼠标按下的 一个是 弹起的 4.在CDrawView构造函数中 初始化CPoint void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { /

2013-09-08 19:48:54 843

原创 VC添加按钮

MFC中Afx为前缀的函数,为全局函数。例:AfxGetApp返回 指向CWinApp的对象的指针   文档/视类结构 文档类:从CDocument中派生的 用于管理 存放 加载 数据. 视类:从CWnd派生的    用于显示 和 修改. MFC中 为了将 数据和显示 分离开来,于是就搞出了文档/视类结构。   窗口类 窗口类对象 和 窗口 窗口类是类 窗口类对象 不是 窗口. 

2013-09-07 18:20:44 832

原创 Windows创建窗口程序

Windows中创建一个窗口程序 必须 经过几个步骤 1.设计 WinMain函数 2.设计WNDCLASS窗口类 3.注册窗口类RegisterClass 4.创建窗口 CreateWindow 5.显示 更新窗口  ShowWindow UpdateWindow 6.编写消息循环 GetMessage 7.编写窗口过程函数 WindowProc    遵循以上步骤 编写

2013-09-05 17:59:20 905

原创 (笔记)C++ Primer/第八章 标准IO库

IO:就是输入和输出 读和写 IO对象不可进行复制和赋值 例如:ofstream out1,out2;          out1=out2//error,io对象不能复制和赋值 如果一个函数需传递或返回IO对象,必须返回该对象的指针或引用.   IO条件状态 如果想在一次调用中设置或清除多个条件状态可以使用位或操作符 例如:is.setstate(ifstream::badb

2013-08-21 17:45:34 865

原创 (笔记)C++ Primer/第七章 函数

函数 返回非引用类型:返回非引用类型会创建一个未命名的临时对象或副本 返回引用类型:    返回引用类型的函数,返回的不是指,返回的是对象。所以千万不能返回局部对象的引用.   默认实参 默认实参是通过给形参表提供明确的初始值来指定的。程序员可为一个或多个形参定义默认值。      【注意事项】      1)如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。

2013-08-21 16:43:51 536

原创 (笔记)C++ Primer/第六章 语句

C语言的 不写

2013-08-21 16:17:37 449

原创 (笔记)C++ Primer/第五章 表达式

类型转换 const_cast 只可以用来添加或删除const特性,用来执行其他类型转换操作都将出错 例: const char *pc_str; char *pc=string_copy(const_cast(pc_str)); static_cast 编译器隐式执行的类型转换可用static_cast来执行. 例: double db=8.44; int i=static_

2013-08-21 16:15:29 526

原创 (笔记)C++ Primer/第四章 数组和指针

指针 void*指针 void*指针可以保存任何类型的对象地址,不过void*指针不能修改指向对象的值.   创建动态数组 c++语言中,可以使用new和delete实现动态内存的创建和销毁 动态数组的定义 例:int* pia=new int[10];//分配了一个10个int型元素数组,并返回该数组元素的第一个指针.用于初始化pia指针 初始化动态分配数组 int* pia=

2013-08-21 15:54:16 633

原创 (笔记)C++ Primer/第三章 标准库类型

单个字符的处理函数   vector对象的定义和初始化 vector对象的操作 迭代器简介 每个容器都有自己的迭代器类型(iterator),如vector: vector::iterator iter begin和and操作 begin:返回迭代器指向的第一个元素 end:返回迭代器指向的最后一个元素的下一个元素 迭代器可以进行自增和解引用运算. 例: vec

2013-08-21 15:20:54 617

原创 (笔记)C++ Primer/第二章 变量和基本类型

初始化 复制初始化语法用 等号= 直接初始化则把初始化式放括号中 例:int val=1024 //复制初始化      int val(1024) //直接初始化 赋值和初始化的区别:赋值是擦出对象当前的值并用新的值代替,初始化式指创建变量并给它赋初始的值.   声明和定义 定义:用于为变量分配存储空间,还可以为变量指定初始值。 声明:用于向程序表明变量的类型和名字。定义也是

2013-08-20 20:40:29 557

空空如也

空空如也

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

TA关注的人

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