08 2011 档案
摘要:void CFindFileDlg::find(CString dir) { CFileFind ff; CString path; //MessageBox(dir); if(dir.Right(1)!="//") dir+="//"; dir+="*.*"; BOOL res=ff.FindFile(dir,0); while(res) { res=ff.FindNextFile(); path=ff.GetFilePath(); { if(path.Right(3)=="tmp"||path.Right(3)
阅读全文
摘要:窗口重绘函数心得 在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应的函数是OnPaint(),它是系统默认的接受WM_PAINT消息的函数,但我们一般在程序中做重绘时都在OnDraw函数中进行的,因为在ONPAIN函数中调用了ONDRAW函数。///CView默认的标准的重画函数void CVie
阅读全文
摘要:加速键的使用第一步:创建加速键表在Resource试图中添加一个Accelerator资源表,在表中根据条件输入值。第二步:在类中添加一个HACCEL的变量 HACCEL m_hAccel;第三步:在初始化函数里面加载对应的加速键表m_hAccel= ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));其中IDR_ACCELERATOR1表示加速键表的ID,别弄错第四步:添加虚函数PreTranslateMessage BOOL CAAADlg::PreTranslateMessage(MSG
阅读全文
摘要:套接字I/O模型1:Select模型Select模型是一种常见的模型,通过select函数来确定套接字状态。在网络应用程序中,通过一个线程来设计一个循环,不停的调用select函数,判断套接字上是否存在数据或者是否能够向套接字写入数据等int select(int nfds,fd_set FAR *readfds, fd_set FAR *writefds,fd_set FAR * exceptfds, const struct timeval FAR * timeout) nfds:无实际意义 readfds表示一组可读套接字 writefds表示一组可写套接字 exceptfds表示一组.
阅读全文
摘要:套接字函数介绍 套接字函数通常封装在Ws2_32.dll动态连接库中,头文件是winsock2.h,因此用户需要引用头文件和链接库 #include “winsock.h” //引用头文件 #pragma comment(lib,”ws2_32.lib”) //链接库文件此外,使用套接库函数前需要初始化套接字,使用函数WSAStartup()实现例如: WSADATA wsd; //定义WSADATA对象 WSAStartup(MAKEWORD(2,2),&wsd); //初始化套接字下面介绍一些套接字函数1:WSAStartup函数:用于初始化动态连接库,而且不可或缺 int WSA
阅读全文
摘要:使用信标对象实现线程同步 信标对象也属于系统内核对象之一,它包含有计数,当使用计数为0时,信标对象处于无信号状态;当使用计数大于0时,信标计数处于有信号状态。 相关函数: CreateSemaphore:用于创建一个信标对象 HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,LONG lInitialCount,LONG lMaxinumCount,LPCTSTR lpName); lpSemaphoreAttributes:表示安全属性,可以是NULL lInitialCount:初始计数 lMaxinumC
阅读全文
摘要:使用关键代码段实现线程同步关键代码段又称临界区,指的是一小段代码,在代码执行前,它需要独占某些资源。在程序中通常将多个线程同时访问某个资源的代码作为临界区。相关函数 InitializeCriticalSection:用于初始化临界区对象 void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) lpCriticalSection:表示一个临界区对象的指针 EnterCriticalSection:用于等待临界区对象的所有权 void EnterCriticalSection( LPCRITICAL_SECTIO.
阅读全文
摘要:源码下载地址:http://download.csdn.net/source/3503308第四:休闲放松 有些玩家希望在玩游戏过程中听歌放松等休闲,所以我自己设计了一个简易的mp3、mp4播放器播放器能够对各个盘符中的mp3、mp4文件进行搜索,免去玩家的查阅对于播放器,大家可以用MFC里面的Windows Media Player控件 对于歌曲的搜索,需要递归函数实现,也可以用CFindFile类实现void CMusicDlg::ListDir(CString Dir){ _finddata_t fdata; long done; //char tempdir[MAX...
阅读全文
摘要:源码下载地址:http://download.csdn.net/source/3503308第三:设计师 好的程序不仅能够让玩家玩设计好的游戏,还应该让他们的新想法得以实现,这就需要为他们提供设计平台 1:布局在游戏界面中,新建一个类来完成里面的全部功能,玩家可以点选右边的图来设计自己的想法左边是布局,可以用一个CRect数组设置其区域CRect pic[6];//用于存储六个图片的位置 CRect place[64];//用于存储64个格子的位置BOOL CDesignDlg::OnInitDialog() { num=0;//默认初始为第十关 chosed=0;//默认选中的是墙 //初.
阅读全文
摘要:第二:制作菜单,完善功能源码下载地址:http://download.csdn.net/source/3503308 一:选关功能 自己要为游戏设置一些关数,而且难度应该递增,这个选关的对话框需要新建,主要是返回一个表示关数的数值void CPushBoxDlg::OnChose() { CchoseDlg dlg; dlg.m_chose_hard=num_hard; dlg.DoModal(); UpdateData(true); UpdateData(false); num_hard=dlg.m_chose_hard; CPushBoxDlg::Initi_State(ii,jj); s
阅读全文
摘要:MFC开发自己的推箱子游戏源码下载地址:http://download.csdn.net/source/3503308第一:推箱子游戏的主界面 游戏的主界面其实就是8×8的区域,在初始化函数中定义它们的矩形区域,里面是我自己收集的8个选关void CPushBoxDlg::Initi_State(int i,int j){ //int i,j; video_flag=0; num_video=-1; text=""; num_step=0; num_DB=0;//初始化箱子和目的地重合个数 for(i=0;i<8;i++) for(j=0;j<8;j+
阅读全文
摘要:使用互斥对象实现线程同步 互斥对象属于系统内核对象,它能够使线程拥有对某个资源的绝对访问权。互斥对象主要包含使用数量,线程ID和递归计数器等信息。其中线程ID表示当前拥有互斥对象的线程,递归计数器表示线程拥有互斥对象的次数。 互斥对象的使用方式:当互斥对象的线程ID为0时,表示互斥对象不被任何线程拥有,此时系统会发出该互斥对象的通知信号。等待互斥对象的某个线程将会拥有该互斥对象,同时互斥对象的线程ID为拥有该互斥对象线程的ID。 当互斥对象的线程ID不是0时,表示当前有线程拥有该互斥对象。系统不会发出互斥对象的通知信号。其他等待互斥对象的线程继续等待,直到拥有互斥对象的线程释放互斥对象的拥有权
阅读全文
摘要:线程同步,由于多个线程同时访问进程中的同一个资源,这就可能造成线程之间的混乱,因此需要线程同步解决相关问题1:使用事件对象实现线程同步 相关函数 CreateEvent:用于创建一个事件对象 HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset, BOOL bInitialState,LPCTSTR lpName); lpEventAttributes:表示事件对象的安全属性 bManualReset:表示事件对象的类型,TRUE表示人工重置事件对象,FALSE表示自动重置事件 对象 bIni.
阅读全文
摘要://如果是利用h=AfxBeginThread()创建线程,需要获取句柄,h->m_hThread线程的挂起在CreateThread()等函数创建线程时,可以指定线程的挂起状态,在运行过程中也可以挂起线程 DWORD SuspendThread(HANDLE hThread); hThread表示线程的句柄 返回值:成功,返回值为之前挂起的线程次数,失败返回0Xffffffff线程的唤醒通过唤醒线程恢复线程的执行 DWORD ResumeThread(HANDLE hThread);线程的终止3种方式//建议第一种方法 1:DWORD dwExit; BOOL ret=GetExitT
阅读全文
摘要:MFC使用AfxBeginThread()函数创建线程CWinThread *AfxBeginThread(AFX_THREADPROC pfnThreadProc,LPVOID pParam,int nPriority=THREAD_PRIORITY_NORMAL,UINT nStackSize=0,DWORD dwCreateFlags=0,LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL)CWinThread *AfxBeginThread(CRuntimeClass *pThreadClass,int nPriority=THREAD_PRIORIT
阅读全文
摘要:不装oracle进行远程连接解决办法最近有一任务,需要使用Oracle数据库,以前对此不太熟悉,就从网上查找资料,(说实在的网络真是太好了,也多亏了许多的热心的技术人员,愿意把自己的经验和心得与大家分享)并转贴了一个帖子参考,不过此帖子有些地方没有说清楚,确实让我费了好大劲,才测试成功。下面我把我的步骤说明一下:(环境:Windows XP sp2 + vs 2008)1、先从Oracle官网下载便捷客户端 InstantClient(需要注册一个用户,免费的) (http://www.oracle.com/technology/software/tech/oci/instantclient/
阅读全文
摘要:Flex动态创建多个曲线图+柱形图获取数据后的回调函数private function resultHandlerDay(event:ResultEvent):void {statisticCount = event.result.statistic.weekstatistic.length;var source:ArrayCollection = event.result.statistic.buildingtatistic;var seriesArr:Array = new Array();for(var i:Number = 0;i<source.length;i++){ var
阅读全文
浙公网安备 33010602011771号