纤程(Fiber)简述
摘要:纤程(Fiber),是微软加入到Windows中,使得UNIX服务器应用程序更好地移植到Windows中。所以本篇真正没有多少应用价值,只是为了使得笔记更加完整。 看完本章,感觉纤程是比线程的更小的一个运行单位。可以把一个线程拆分成多个纤程,然后通过人工转换纤程,从而让各个纤程工作。 要知道的是人工的转换,不是系统自动切换。因为线程的实现通过Windows内核完成的,因此Windows可以自动对线程进行调度。但是纤程是通过用户模式的代码来实现的,是程序员自己写的算法,内核不知道纤程的实现方式,而是你自己定义的调度算法,因此纤程是“非抢占”的调度方式。 还有要知道就是,一个线程可以包含多个...
阅读全文
posted @
2013-12-28 18:33
归海一刀
阅读(831)
推荐(0)
关于Z序的总结
摘要://转自:http://blog.csdn.net/flowshell/article/details/4797917Z 序:一个重叠窗口的堆,每个窗口在Z 序中 都有唯一一个位置。一个窗口的Z 序 ,指明了该窗口在重叠窗口堆中的位置。这个窗口堆 是沿着一个虚拟的轴——“ Z 轴”,从屏幕上垂直向屏幕外延伸。 Z 序顶部的窗口覆盖 Z 序中的其他窗口。 Z 序底部的窗口被 Z 序中的其他窗口覆盖。 系统用一个单链表维护 Z 序。系统按照顶端窗口、顶层窗口和子窗口的分类 ,将窗口插入到 Z 序表中。顶端窗口覆盖其他所有非顶端窗口,而不管它是不是活动窗口或是不是前台窗口。顶端窗口有 WS_EX_T
阅读全文
posted @
2013-12-06 10:28
归海一刀
阅读(735)
推荐(0)
SetProcessWorkingSetSize 函数的骗局
摘要:SetProcessWorkingSetSize函数的骗局本文引用自:http://hi.baidu.com/jenson138/item/e64e7e453c5b28e21381da9c我实在不愿意提起这个话题.后来在网上看到几篇文章,深深感觉到,已经有程序员站出来,揭穿这个忽悠了千百万用户的诡计了...附2篇文章的地址:http://blog.csdn.net/biku/archive/2006/07/06/886038.aspxhttp://blog.csdn.net/zlt982001/archive/2005/08/28/466879.aspx我这篇文章无非是归纳了几篇文章的内容,并
阅读全文
LockWindowUpdate的函数的用法
摘要:Application.ProcessMessages;LockWindowUpdate(Self.Handle);//锁住当前窗口LockWindowUpdate(0)//解除锁定窗口LockWindowUpdate不但闪烁,而且有可能引起桌面闪烁。因为LockWindowUpdate并不忽略消息,只是暂时不响应,所以有可能积聚多个重画消息,并在使用LockWindowUpdate(0)之后依次响应。而使用SendMessage(ClientHandle,WM_SETREDRAW,0,0)之后,控件根本不接收重画消息,除非使用SendMessage(ClientHandle,WM_SETRE
阅读全文
z-order引出的问题
摘要:在窗口与窗口之间毫无重叠的情况下,根本不需要关心z-order。然而,当窗口之间出现重叠时,系统就需要通过一个标准来确定窗口的显示顺序。这个标准就是z-order。存在多个因素影响一个窗口的z-order: 1、窗口类型是否为TOPMOST; 2、窗口间的父子关系; 3、窗口间的owner关系; 4、是否为active状态。 z-order的确定过程如下: 1、所有topmost窗口的zorder都比非topmost窗口高; 2、一个top-level窗口的zorder比它的owner的zorder高; 3、子窗口的zorder与父窗口的zorder一样高。 什么是top-level窗口? .
阅读全文
关于句柄的基础知识
摘要:什么是对象的句柄?句柄术语一般用来指获取另一个对象的方法——一个广义的假指针。这个术语是(故意的)含糊不清的。含糊不清在实际中的某些情况下是有用的。例如,在早期设计时,你可能不准备用句柄来表示。你可能不确定是否将一个简单的指针或者引用或者指向指针的指针或者指向引用的指针或者整型标识符放在一个数组或者字符串(或其它键)以便能够以哈希表(hash-table)(或其他数据结构)或数据库键或者一些其它的技巧来查询。如果你只知道你会需要一些唯一标识的东西来获取对象,那么这些东西就被称为句柄。因此,如果你的最终目标是要让代码唯一的标识/查询一个Fred类的指定的对象的话,你需要传递一个Fred句柄给这些
阅读全文
Windows常见窗口样式和控件风格
摘要:一、窗口样式WS_POPUP 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW 子窗口(不能与WS_POPUP合用)WS_MINIMIZE 创建窗口拥有最小化按钮WS_MINIMIZEBOX 创建窗口拥有最小化按钮,须同时指定WS_SYSTEM样式WS_VISIBLE 可见状态WS_DISABLED 不可用状态WS_CLIPSIBLINGS 使窗口排除子窗口之间的相对区域WS_CLIPCHILDREN 当在父窗口内绘图时,排除子窗口区域WS_MAXIMIZE 具有最大化按钮WS_MAXIMIZEBOX 创建窗口拥有最大化按钮,须同时指定WS_SYSTEM
阅读全文
Win32 API消息函数:GetMessagePos
摘要:函数功能:该函数返回表示屏幕坐标下光标位置的长整数值。此位置表示当上一消息由GetMessage取得时鼠标占用的点。函数原型:DWORD GetMessagePos(VOID)参数:无。返回值:返回值给出光标位置的X,y坐标。X坐标在低位整数,y坐标在高位整数。备 注:如前所述,X坐标在返回值的低位整数,y坐标在高位整数(都表示有符号值,因为在多显示器的系统里可取得负值)。如果返回值赋给了一个变量,可用 MAKEPOINT宏从返回值取得POINT结构。也可用GET_X_LPARAM或GET_Y_LPARAM宏来抽取X,y坐标。要得到光标的当前位置而不是上一个消息发生时的位置,调用函数GetCu
阅读全文
GetSystemMetrics()函数的用法
摘要:可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。第一步:用GetSystemMetrics获取屏幕的宽度和高度int x, y;x = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度 y = GetSystemMetrics(SM_CYSC
阅读全文
SystemParametersInfo
摘要:Windows-API-user32 SystemParametersInfo应用SystemParametersInfo函数可以获取和设置数量众多的windows系统参数。这个小程序就是运用了SystemParametersInfo函数来设置桌面的墙纸,而且程序可以让我们选择多幅墙纸图片,程序会以一定的时间间隔自动改变墙纸。我们先来看看SystemParametersInfo函数的定义和参数:使用API函数之前必须先在程序中声明如下:Private Declare Function SystemParametersInfo Lib "user32" Alias "
阅读全文
vc 窗口尺寸和位置1
摘要:尺寸和位置窗口的尺寸和位置是由一个限定矩形来表示的,它给出了相对于屏幕或父窗口的坐标。对于顶层窗口来说这个坐标是相对于屏幕左上角(由于桌面窗口一般是没有边框的),对于子窗口则是相对于父窗口的左上角的坐标。应用程序在创建窗口时指定窗口的初始尺寸和位置,也可随时改变窗口的尺寸和位置。尺寸窗口的尺寸(宽和高)是以象素为单位的,一个窗口的高度和宽度都可以为0,如果应用程序把某个窗口的高度和宽度都置成0,Windows系统就把尺寸置成默认的最小窗口尺寸。应用程序是通过带有SM_CXMIN和SM_CYMIN标志的函数GetSystemMetrics来获取最小窗口的默认尺寸的。应用程序可能要创建具有一定尺寸
阅读全文
vc 窗口尺寸和位置
摘要:尺寸和位置窗口的尺寸和位置是由一个限定矩形来表示的,它给出了相对于屏幕或父窗口的坐标。对于顶层窗口来说这个坐标是相对于屏幕左上角(由于桌面窗口一般是没有边框的),对于子窗口则是相对于父窗口的左上角的坐标。应用程序在创建窗口时指定窗口的初始尺寸和位置,也可随时改变窗口的尺寸和位置。尺寸窗口的尺寸(宽和高)是以象素为单位的,一个窗口的高度和宽度都可以为0,如果应用程序把某个窗口的高度和宽度都置成0,Windows系统就把尺寸置成默认的最小窗口尺寸。应用程序是通过带有SM_CXMIN和SM_CYMIN标志的函数GetSystemMetrics来获取最小窗口的默认尺寸的。应用程序可能要创建具有一定尺寸
阅读全文
AdjustWindowRect
摘要:函数功能:该函数依据所需客户矩形的大小,计算需要的窗口矩形的大小。计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。函数原型:BOOL AdjustWindowRect(LPRECT lpRect ,DWORDdwStyle,BOOLbMENU);参数:lpRect:指向RECT结构的指针,该结构包含所需客户区域的左上角和右下角的坐标。函数返回时,该结构容纳所需客户区域的窗口的左上角和右下角的坐标。dwStyle:指定将被计算尺寸的窗口的窗口风格。bMenu:指示窗口是否有菜单。如窗口有菜单,则设为0x1/*_TRUE*/(非零)[1]返回值:如果函
阅读全文
关于鼠标捕获的api
摘要:GetCapture:返回当前捕获鼠标输入的窗口的句柄SetCapture():通过句柄设置指定窗口来捕获鼠标的输入ReleaseCapture:释放当前捕获鼠标的窗口的捕获功能同一时间只能有一个前景窗口可以捕获鼠标。当在控件上按下鼠标时,会自动执行SetCapture(),这时该控件的鼠标移动事件在全屏都会触发,松开鼠标按键时自动执行ReleaseCapture释放捕获
阅读全文
永远的窗口(个人对窗口的拙见)
摘要:文章愿意和大家分享,但是转载请注明出处!如果windows一直存在下去,窗口这个话题也许是永恒的……1. 一切皆窗口在我看来桌面上的一切都是窗口,桌面本身是窗口,开始菜单是窗口,桌面上永远置顶的播放器是个置顶的窗口,工具栏是个子窗口…….不仅我这么看,Spy++也这么看,如下图:图 1‑1 Spy++和桌面一切都是窗口,窗口错落有致,成为界面树上的翩翩叶子,组织成了我们所看到的整个Windows系统用户界面。我们首先通过一个普普通通典型的窗口,来分析一下窗口的组成:图 1‑2 普普通通的窗口 一个窗口是有很多界面元素的,比如标题栏,菜单栏,状态栏等等。但实际上可以把这些归为两类,一类是客户区,
阅读全文
RedrawWindow, UpdateWindow,InvalidateRect 用法
摘要:1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateRect 和 InvalidateRgn把指定的区域加到窗口的 Update Region 中,当应用的消息队列没有其他消
阅读全文
解决SetForegroundWindow和BringWindowToTop等函数有时失败,无法将窗口带到前台的问题
摘要:C++代码12345678910111213BOOL SetTopWindow(HWND hWnd){HWND hForeWnd = GetForegroundWindow();DWORD dwForeID = GetWindowThreadProcessId(hForeWnd, NULL);DWORD dwCurID = GetCurrentThreadId();AttachThreadInput(dwCurID, dwForeID, TRUE);ShowWindow(hWnd, SW_SHOWNORMAL);SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0,
阅读全文
SetForceGroundWindow
摘要:SetForegroundWindow函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。函数原型:BOOL SetForegroundWindow(HWNDhWnd)hWnd为指定的窗口的窗口句柄。返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。备注:前台窗口是z序顶部的窗口,是用户的工作窗口。在一个多任务优先抢占环境中,应让用户控制前台窗口。Windows NT 5.0:当用户在另一个窗口中工作时,应用程序不能强行设置一个窗口到前台。相反,SetForeg
阅读全文
WM_INITDIALOG与WM_CREATE消息的区别
摘要:WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕(可以安全的使用这个窗口了,例如在它上面画控件等)。在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。 WM_INITDIALOG消息是对话框才能收到的消息,表明对话框及其所有子控件都创建完毕了。这个状态肯定是在调用显示对话框的函数之前,因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改。 ============================
阅读全文
CenterWindow()的用法
摘要:CenterWindow()的用法为: void CenterWindow( CWnd* pAlternateOwner = NULL ); 其中参数pAlternateOwner指向所想居中的窗口的指针。 然后利用函数GetSystemMetrics( int nIndex )得到系统当前设置如屏幕分辨率等。 nIndexs= SM_CXSCREEN 时函数返回屏幕的宽度;返回值单位为像素点。 nIndexs= SM_CYSCREEN 时函数返回屏幕的高度;返回值单位为像素点。 函数BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) 是最重
阅读全文