- 博客(33)
- 收藏
- 关注
原创 Windows核心编程_2.ansi和unicode
WideCharToMultiByteint WideCharToMultiByte(UINT CodePage, DWORD dwFlags,LPCWSTR lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cbMultiByte,LPCSTR lpDefaultChar,LPBOO
2014-05-02 10:51:39
447
原创 vc安装hook
钩子的创建钩子安装函数:HHOOK SetWindowsHookEx( int idHook, // hook type 钩子的类型 HOOKPROC lpfn, // hook procedure 钩子的过程函数 HINSTANCE hMod, // handle to
2013-10-25 16:52:33
624
原创 vc编写动态链接库
静态库和动态库 静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件); 动态库: 在使用动态库的时候,往往提供两个文件:一个因入库和一个DLL。因入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接
2013-10-24 20:46:21
589
转载 vc开发ActiveX控件
容器和服务器程序 容器应用程序时可以嵌入或链接对象的应用程序。Word就是容器应用程序。 服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。 ActiveX控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。 Dispatch maps调度映射,主要是MFC提供让外部应用程序可以访问控件的属性和方法 Event m
2013-10-24 13:56:24
701
原创 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
676
原创 vc创建剪贴板
1.打开剪贴板OpenClipboard(),2.EmptyClipboard()清空剪贴板获得剪贴板的权限3.分配内存GlobalAlloc4.加锁 得到分配内存的指针6.复制数据到指针指向的内存中5.解锁6.设置剪贴板数据void CClipboardDlg::OnBtnSend() { // TODO: Add your control notificat
2013-10-21 14:38:33
651
原创 vc异步套接字
MFC 创建异步套接字的网络聊天程序1.首先包含 winsock2.h2.工程-设置 链接 ws2_32.lib3.在app类的InitInstance()中加载套接字库 因为要用2.2的版本 所以AfxSocketInit()不用 不过AfxSocketInit加载1.1版本很方便 并且可以省去上面两步骤BOOL CChat16App::InitInstance(){ W
2013-10-17 19:23:03
765
原创 vc线程同步
线程同步的另外两种方式1.事件对象2.关键代码段,即临界区. 1.事件对象:内核对象 包含三成员:使用计数,人工重置还是自动重置,有信号无信号创建事件对象HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOLbManualReset, BOOLbInitialState, LPTSTRl
2013-10-17 19:08:03
552
原创 vc多线程
一些概念进程和线程的概念: 套用 孙鑫的来说 进程就好像一个手术室.线程就是里面的医生,线程当中一定有一个主线程也就是程序里的main或winmain.记住代码不是线程.代码相当于医生的手术方案,你完成了手术方案,你医生就完成工作了. 也就是说代码的结束相当于线程的结束.一个进程当中可以有1个以上的线程.当然在程序当中你必须自己创建新的线程咯.我们可以当创建一个新线程为主刀医生叫一个新的
2013-10-14 18:12:15
484
原创 VC网络编程
ISO/OSI 7层:为的是解决因网络环境复杂的问题,从而划分为一个个的小模块.从下往上说:1.物理层2.数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层 TCP/IP模型从下往上说:1.网络接口层2.网络层3.传输层4.应用层 先下机 明天补充
2013-10-13 18:43:45
660
转载 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
754
原创 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
654
原创 vc创建文件对话框
1.先构造一个 CFileDialog对象CFileDialog::CFileDialogCFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_
2013-10-10 11:38:00
916
原创 MFC加入滚动条
1. 可以在新建MFC程序时从CScrollView中派生类,也可以手动修改选择VC菜单项Edit-Replace2. 第一步做好后,当你编译运行时,程序会出错!并且不会出现滚动条,我们还要在窗口创建完毕后,我们可以添加个虚函数OnInitialUpdate()。在OnInitialUpdate()调用SetScrollSizes函数设置滚动条范围,因为OnInitialUpdat
2013-10-05 16:47:01
1231
原创 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
508
原创 VC工具栏编程
工具栏编程工具栏上的按钮ID与菜单项ID一样,因为工具栏是为了方便使用一些常用的菜单项命令.工具栏删除按钮:按delete是没用的只是将按钮的图像删掉了,正确的方法应该是,用鼠标把想删除的按钮拖出去.创建工具栏的方法:1.创建工具栏资源2.构造CToolBar对象3.调用Create或CreateEx函数创建工具栏,并把它与已创建的CToolBar对象关联起来.4.Lo
2013-09-30 15:23:53
738
原创 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
602
原创 vc创建属性表单向导
属性表单 1.插入属性页资源。Insert->new Resource->Dialog 2.当选择Classwizard菜单时,系统提示是否为创建新的类,我们将其从CPropertyPage派生!这样可以为方便为其增加消息响应函数。 3.插入新的从CPropertySheet派生的类,在类中增加3个CPropertyPage的实例。 4.在view中增加菜单项,当点击
2013-09-24 17:56:54
709
原创 vc创建对话框
模态对话框的创建: 创建模态对话框要调用CDialog类的成员函数:DoModel(),创建一个模态对话框,其返回值作为CDialog类的另一个成员函数:EndDialog的参数,后者的功能就是关闭模态对话框。 Void CMyboleView::OnDialog(){ CTestDlg dlg;//视类中源文件要包含这个类的头文件
2013-09-24 17:52:07
860
原创 VC菜单编程
菜单命令的路由命令消息是由OnCommadn这个函数来处理的当单击菜单项参数命令消息后。框架类会收到此条消息,然后框架类会把消息给视类。视类会查找自己是否对该消息作出响应,如果有,则进行相应的处理结束路由过程。没有则交给文档类,文档类也会查找是否对消息做出响应,作出了则结束,否则 又给视类,视类又给框架类,框架类又给应用程序类。屏蔽菜单项,使之不能用 (需要在CMainFr
2013-09-16 20:35:39
603
原创 VC简单画图
1.新建单文档工程2.首先在CDrawView中添加 private成员 CPoint m_ptOrigin(用来记录原点的)3.然后再VC的类向导中 添加 两个 消息 一个是 鼠标按下的 一个是 弹起的4.在CDrawView构造函数中 初始化CPointvoid CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { /
2013-09-08 19:48:54
742
原创 VC添加按钮
MFC中Afx为前缀的函数,为全局函数。例:AfxGetApp返回 指向CWinApp的对象的指针 文档/视类结构文档类:从CDocument中派生的 用于管理 存放 加载 数据.视类:从CWnd派生的 用于显示 和 修改.MFC中 为了将 数据和显示 分离开来,于是就搞出了文档/视类结构。 窗口类 窗口类对象 和 窗口窗口类是类窗口类对象 不是 窗口.
2013-09-07 18:20:44
746
原创 Windows创建窗口程序
Windows中创建一个窗口程序必须 经过几个步骤1.设计 WinMain函数2.设计WNDCLASS窗口类 3.注册窗口类RegisterClass4.创建窗口 CreateWindow5.显示 更新窗口 ShowWindow UpdateWindow6.编写消息循环 GetMessage7.编写窗口过程函数 WindowProc 遵循以上步骤 编写
2013-09-05 17:59:20
780
原创 (笔记)C++ Primer/第八章 标准IO库
IO:就是输入和输出 读和写IO对象不可进行复制和赋值例如:ofstream out1,out2; out1=out2//error,io对象不能复制和赋值如果一个函数需传递或返回IO对象,必须返回该对象的指针或引用. IO条件状态如果想在一次调用中设置或清除多个条件状态可以使用位或操作符例如:is.setstate(ifstream::badb
2013-08-21 17:45:34
777
原创 (笔记)C++ Primer/第七章 函数
函数返回非引用类型:返回非引用类型会创建一个未命名的临时对象或副本返回引用类型: 返回引用类型的函数,返回的不是指,返回的是对象。所以千万不能返回局部对象的引用. 默认实参默认实参是通过给形参表提供明确的初始值来指定的。程序员可为一个或多个形参定义默认值。 【注意事项】 1)如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。
2013-08-21 16:43:51
484
原创 (笔记)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
461
原创 (笔记)C++ Primer/第四章 数组和指针
指针void*指针void*指针可以保存任何类型的对象地址,不过void*指针不能修改指向对象的值. 创建动态数组c++语言中,可以使用new和delete实现动态内存的创建和销毁动态数组的定义例:int* pia=new int[10];//分配了一个10个int型元素数组,并返回该数组元素的第一个指针.用于初始化pia指针初始化动态分配数组int* pia=
2013-08-21 15:54:16
575
原创 (笔记)C++ Primer/第三章 标准库类型
单个字符的处理函数 vector对象的定义和初始化vector对象的操作迭代器简介每个容器都有自己的迭代器类型(iterator),如vector:vector::iterator iterbegin和and操作begin:返回迭代器指向的第一个元素end:返回迭代器指向的最后一个元素的下一个元素迭代器可以进行自增和解引用运算.例:vec
2013-08-21 15:20:54
551
原创 (笔记)C++ Primer/第二章 变量和基本类型
初始化复制初始化语法用 等号=直接初始化则把初始化式放括号中 例:int val=1024 //复制初始化 int val(1024) //直接初始化赋值和初始化的区别:赋值是擦出对象当前的值并用新的值代替,初始化式指创建变量并给它赋初始的值. 声明和定义定义:用于为变量分配存储空间,还可以为变量指定初始值。声明:用于向程序表明变量的类型和名字。定义也是
2013-08-20 20:40:29
495
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人