VC/MFC
digu
http://blog.youkuaiyun.com/piggyxp/article/details/6922277
http://blog.youkuaiyun.com/zhengzhb/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
VC学习摘要1——关于windows程序的一般原理
1、消息(MSG)结构体 typedef struct tagMSG { HWND hand; UINT message; WPARAM wParam; LPARAM lPARAM; DWORD time; POINT pt;} MSG原创 2007-03-30 19:24:00 · 898 阅读 · 0 评论 -
关于socket编程
使用socket之前要先通过WSAStartup()函数加载socket库和进行该库的版本协商,注意其第一个参数wVersionRequested 通过MAKEWORD宏来获取,宏参数的高位字节代表该库副版本,而高位字节代表主版本。对于每一个WSAStartup()的成功调用(成功加载WinSock.dll后),在最后都对应于一个WSACleanUp调用,以释放为该应用进程释放的资源。1、基于TC原创 2007-08-17 16:16:00 · 1137 阅读 · 0 评论 -
VC学习摘要3
1、 消息的分类: (1)标准消息 除了WM_COMMAND之外,所有以WM_开头的消息。此类消息能且只能被从CWnd派生的类接收。 (2)命令消息 来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK程序中,通过消息的wParam参数识别。所有从CCmdTarget派生的类,都原创 2007-05-24 00:07:00 · 708 阅读 · 0 评论 -
阻塞和非阻塞
Windows套接字在两种模式下执行I/O操作,阻塞和非阻塞。在阻塞模式下,在I/O操作完成前,执行操作的Winsock函数会一直等待下去,不会立即返回程序(将控制权交还给程序)。而在非阻塞模式下,Winsock函数无论如何都会立即返回。Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。Windows原创 2007-08-22 16:56:00 · 947 阅读 · 0 评论 -
使用异步选择函数WSAAsyncSelect
Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。Windows Sockets的异步选择函数WSAAsyncSelect()提供了消息机制的网络事件选择(lEvent),当使用它登记的网络事件发生时,Windows应用程序相应的窗口(hWnd)函数将收到一个消息(wMsg),消息中指示了发生的网络事原创 2007-08-22 18:56:00 · 1290 阅读 · 0 评论 -
利用剪贴板进行进程间通信
发送端代码:if (OpenClipboard()) //打开一个剪贴板 { CString str; HANDLE hClip; char *pBuf; EmptyClipboard(); //清空剪贴板,并将剪贴板的所有权分配给打开它的窗口 GetDlgItemText(IDC_EDIT_SEND, str);原创 2007-08-23 15:42:00 · 1576 阅读 · 0 评论 -
四种进程间通信方式简介与比较
CreatePipe(&m_hRead, &m_hWrite, &sa, 0)创建匿名管道CreateProcess("..//Child//debug//Child.exe", NULL, NULL, NULL,TRUE, 0, NULL, NULL, &sui, &pi)通过STARTUPINFO结构体sui将父进程匿名管道读写句柄传递给子进程 sui.hStdInput = m原创 2007-08-28 16:39:00 · 9751 阅读 · 3 评论 -
Template-Based Classes的用法
1、简单型 Template-Based Classes使用时需要指定参数 CArray CList CMap 其中type用来指定你希望收集的对象的类型(int,float或者其他C++的类),arg_type则用来指定函数的参数类型。例如: CArry m_intArray; m_intArray.Add(15); 表示需要一个in原创 2007-08-30 19:11:00 · 1995 阅读 · 0 评论 -
hook编程
一个标准的windows sdk程序的消息处理过程是:操作系统捕获某一窗口的消息,然后将该消息放到对应窗口的消息队列中,应用程序利用GetMessage从消息队列中取出消息,然后DespatchMessage将该消息传回给操作系统,最后操作系统调用该窗口的窗口过程来处理该消息。所谓钩子(hook)就是当想屏蔽掉某些消息的时候,利用hook函数拦截该消息。The SetWindowsHookEx原创 2007-09-05 16:23:00 · 1410 阅读 · 0 评论 -
DLL初学者指南
为了建立项目,请选择Win32 控制台项目(Win32 Console Application),并且在应用程序设置标签(the advanced tab)上,选择DLL和空项目选项。DLLs可能并不如你想像的那样难。首先写你的头文件(header file);称为DLLTutorial.h。这个文件与其它头文件一样,其中只是一些函数的原型。#ifndef _DLL_TUTORIAL_H_#def转载 2007-09-04 14:25:00 · 930 阅读 · 0 评论 -
VC学习摘要4
1、CPoint对象只能在相应 WM_PAINT消息的时候使用,一般被用在OnPaint消息处理函数中。其在构造的时候就执行了BeginPaint得到一个dc,在析构的时候执行 了EndPaint函数释放一个dc。CClientDC对象被用来相应其他非WM_PAINT消息时使用,在构造的时候调用GetDC得到dc,在析构 的时候调用ReleaseDC函数释放dc。 2、win32应用程序接口原创 2007-06-14 01:18:00 · 942 阅读 · 0 评论 -
利用事件对象实现线程同步
事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置事件还是人工重置事件的bool值,另一个用于指明该事件处于已通知状态(有信号状态)还是未通知状态(无信号状态)的bool值,当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程,需要用ResetEvent函数设置其事件状态,且WaitForSingleObject不能设置该事件对象的状态。当一个自动重置的事件得到原创 2007-08-20 14:40:00 · 915 阅读 · 1 评论 -
WinSock学习笔记
Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream socket)定义:#define SOCK_STRE转载 2007-08-19 16:36:00 · 999 阅读 · 0 评论 -
MFC中如何自定义消息(加点关于MFC的牢骚)
1、在需要接收用户自定义消息的头文件中#define UM_PROGRESS WM_USER+n (n为一个正整数,因为windows的标准消息都小于WM_USER,这样可以避免和标准消息重复,Microsoft推荐自定义消息值至少为WM_USER+100) ;2、在类头文件中加入自定义消息处理函数的声明:afx_msg void OnProgress();,注意消息附加参数的使用;3、在类的实现原创 2007-08-12 23:09:00 · 1449 阅读 · 0 评论 -
MFC中的图象保存--关于兼容DC和CMetaFileDc的用法
MFC中的图象保存一般有三种方法:1、把图象中的各个图象的完整相关信息(点坐标,图象类型)以一个结构体保存,将其指针加入到CPtrArray类对象中,然后在OnDraw函数中取出相关信息绘图。2、使用兼容DC:先将当前图象贴到一个内存CBitmap对象块中,然后再用兼容DC将其SelectObject,OnDraw函数中在拷贝兼容DC的内容到当前的绘图DC中完成重绘操作。//保存当前位图的操作原创 2007-08-14 22:20:00 · 6303 阅读 · 3 评论 -
VC学习摘要2
6、关于函数重载的条件:函数 的参数类型或者参数个数不同。与函数返回值没有关系。且注意一种缺省实参的情况,如(1) void func(int a, int b=5); (2) void func(int a);,也不构成重载函数,如果程序中出现func(2)来调用则非法调用。 7、MFC程序的 WinMain函数实在链接阶段由链接器将其链接到程序之中的。在一个单文档程序中,都会有一原创 2007-05-12 20:55:00 · 724 阅读 · 0 评论 -
MFC中关于打开和另存为对话框中过滤器的编程
利用CFileDialog类来制作另存为和打开对话框 CFileDialog filedlg(FALSE); //FALSE表示制作另存为对话框,TRUE为打开对话框 filedlg.m_ofn.lpstrTitle = "我的文件保存"; //filedlg.m_ofn是一个OPENFILENAME 结构体,通过对该结构体成员的改变来修带对话框的相关属性。其lpstrTitle中原创 2007-08-15 16:42:00 · 3704 阅读 · 1 评论 -
乱记Serializable Class
通俗的说,一个可以Serializable的类就是支持archive>操作的类。如何定义一个Serializable ClassFive main steps are required to make a class serializable. They are listed below and explained in the following sections: De原创 2007-08-16 17:11:00 · 1047 阅读 · 0 评论 -
关于CDocManager类
msdn中居然找不到CDocManager类的说明,网上找到这篇文档,有待分析。首先有个不明白的地方,我的书上说CDocManager类是不公开的,可是我还是找到了他的类定义和实现,真搞不懂她这个不公开是什么意思??? CDocManager的定义如下:class CDocManager : public CObject{ DECLARE_DYNAMIC(CDocManage转载 2007-08-16 15:28:00 · 3059 阅读 · 3 评论 -
利用互斥对象实现线程同步
1、关于WaitForSingleObject的返回值If the function succeeds, the return value indicates the event that caused the function to return. This value can be one of the following.原创 2007-08-18 21:26:00 · 1060 阅读 · 0 评论 -
多线程编程小结
程序和进程 程序是计算机指令的集合,它以文件的形式存储在磁盘上。 进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。 进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。 进程由两个部分组成:转载 2007-08-19 16:33:00 · 739 阅读 · 0 评论 -
利用关键代码段实现线程同步
关键代码段是工作在用户方式下,关键代码段(临界区)是指一小代码段,在代码能够执行前,他必须独占对某些资源的访问权。 每个临界区对象对应于一个临界资源。#include #include DWORD WINAPI Func1Proc(LPVOID lpParameter);DWORD WINAPI Func2Proc(LPVOID lpParameter);int tickets = 100;CRI原创 2007-08-20 15:34:00 · 778 阅读 · 0 评论 -
三种线程同步方式的比较
1、互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度比较慢,但是利用内核对象,可以在多个进程的多个线程之间进行线程同步。2、关键代码段是工作在用户方式下,同步速度比较快,但容易产生死锁,因为在等待进入关键代码段时,无法设定超时值。一般在进行多线程编程时,首选关键代码段,如果在一个mfc程序中使用,可以在一个类的构造函数中调用InitializeCriticalSection函数,在这原创 2007-08-20 16:05:00 · 1973 阅读 · 0 评论 -
vc下DLL/lib的调用
1、简介:dll和.lib都是程序集合,便于代码重用。都是二进制的文件。 .dll也叫动态链接库,与程序链接的方式为运行时链接(run-time linked),为PE(portable executable)格式,也 就是程完整的程序。.exe、.dll、.fon、.mod、.drv、.ocx等等都是动态链接库。如.exe为系统调用的函数集合。.dll不存在同 名引用,且有导出表,与导入表。转载 2007-11-15 14:30:00 · 1242 阅读 · 0 评论
分享