Windows API
caiqi1123
caiqi1123
展开
-
如何得到句柄和句柄对应的内存
先来看些权威的片断:... typedef unsigned int HANDLE; #define DECLARE_HANDLE(name) typedef UINT name DECLARE_HANDLE(HMODULE); DECLARE_HANDLE(HINSTANCE); DECLARE_HANDLE(HLOCAL); DECLARE_HANDLE(H转载 2012-03-27 14:53:22 · 2650 阅读 · 0 评论 -
BeginPaint和GetDC有什么区别?(转)
这是个windows编程问题。 第一种情况显示出来的字很正常。 case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, strlen (s)); EndPaint (hwnd, &ps); break; 第二种情况显示的字不停转载 2013-09-04 23:09:27 · 912 阅读 · 0 评论 -
InvalidateRect(HWND) 与 ValidateRect(HWND)的区别
InvalidateRect(HWND) 使无效 ValidateRect(HWND)使有效 区别在重绘InvalidateRect(HWND) 使窗口无效 产生消息WM_PAINT; ValidateRect(HWND)使窗口有效 清除消息队列中的WM_PAINT消息 Invalidate() -- RedrawWindow() -- UpdateWind转载 2013-09-04 22:08:48 · 1142 阅读 · 0 评论 -
MFC的子类化技术
Windows是一个基于消息的系统,消息在Windows的对象之间进行着传递。子类化和Windows的钩子机制存在于消息系统之中,我们可以利用这些机制来操纵、修改甚至丢弃那些在操作系统或是进程中传递的消息,以求改变系统的一些行为。 子类化技术用来截取窗口或控件之间的消息,当然是消息在到达目的窗口之前完成的操作。这些被截获的消息既可以保留也可以修改它们的状态,之后就继续发送到目的地。子类化技术转载 2013-08-30 22:11:39 · 651 阅读 · 0 评论 -
窗口客户区和视图客户区的区别
窗口(框架/frame)的客户区和视图(view)的客户区的区别? 这些都是初学者很容易迷惑的地方,我也是很迷惑,不过经过一番折腾终于弄明白这些问题了.对于这些问题,我想只用两个图片来说明最直观!如下:1,在一个MDI(多文档)应用程序中每个概念如下图所标示:效果如下图1,窗口框架的客户区就是指图中的灰色部分:即蓝色方框内区域,框架的非客户区就是转载 2013-08-26 20:23:57 · 4092 阅读 · 0 评论 -
同一个窗口类别可以建立多个窗口
windows程序设计上说,同一个窗口类别可以建立多个窗口,这些窗口都是共用同一个窗口消息处理函数WndProc,WndProc的HWND参数用以识别具体的窗口,所以就稍微改了一下书中的例子,Create两个窗口,试验消息处理函数,然后在wndproc中,做不同的处理。#include #include #pragma comment(lib,"winmm.lib")LRE转载 2013-08-28 16:56:23 · 1663 阅读 · 0 评论 -
__cdecl __fastcall与 __stdcall区别
C++ Calling Convention调用约定:__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、原创 2012-06-27 10:06:07 · 858 阅读 · 0 评论 -
回调函数总结
回调函数、消息和事件例程 调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程原创 2012-06-27 09:45:53 · 1496 阅读 · 0 评论 -
基于MFC+VC平台下开发程序问题及技巧综合
Q1:*********************************VS2008下面对话框大小好像就是像素大小;可是VC6.0下资源视图对话框大小貌似不是像素大小;现在要在VC6.0下1024*768分辨率下开发界面,不知道怎么弄。A1:*********************************是VC6.0下资源视图对话框大小貌似不是像素大小>>不是像素,是di原创 2012-04-06 11:40:59 · 1037 阅读 · 0 评论 -
WIN_静态库与动态库的加载、VC project参数设置
VC环境下的静态库使用一. 静态库包括.lib和.h文件,在工程中使用静态库分为3步: 在工程中加入静态库,有三种方法: **方法一:项目设置中引用.lib,project-> setting-> link-> object/library modules中添加.lib;(可以在这里指定路径,也可以在project>settings>link>input的A原创 2012-06-04 15:50:42 · 3984 阅读 · 1 评论 -
GetWindowRect和GetClientRect(转)
原文:http://blog.chinaunix.net/u/25372/showart_304363.htmlGetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏原创 2012-04-06 13:42:45 · 949 阅读 · 0 评论 -
UpdateData、Invalidate、InvalidateRect和UpdateWindow及RedrawWindow
Invalidate和UpdateWindow的区别按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列中WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用Update原创 2012-04-04 21:12:24 · 1774 阅读 · 0 评论 -
GDI函数 坐标系综述
笔者采用Visual C++6.0开发图形数据支持系统,其中的难点正在于理解坐标系统的含义、各种映射模式的意义以及与逻辑坐标的转换。下面分几个部分逐一进行论述: 一 坐标系统概述 众所周知,VC中的坐标系统分为逻辑坐标和设备坐标,逻辑坐标就是内存中虚拟的坐标,我们可以理解为看不见的,而设备坐标就是跟具体的设备相联系的坐标系统,如:显示器和打印机等转载 2012-04-04 21:40:01 · 1183 阅读 · 0 评论 -
HDC,CDC,CWindowDC,CClientDC,CPaintDC基础
A device context is a structure that defines a set of graphic objectsand their associated attributes, as well asthe graphic modes that affect output. Thegraphic objects include a pen for line drawin转载 2012-03-27 17:24:34 · 1032 阅读 · 0 评论 -
Memory Management Functions综述
This topic describes the memory management functions:General Memory FunctionsData Execution Prevention FunctionsFile Mapping FunctionsAWE FunctionsHeap FunctionsVirtual Memory FunctionsGlobal an原创 2012-03-29 15:07:17 · 976 阅读 · 0 评论 -
CPalette,CBitmap与DIB
CPalette是MFC封装的调色板类。CPalette的操作如下: 1. 创建调色板。要创建一个调色板,需要首先知道要创建的调色板对象所包含的颜色数nColors,然后创建一个逻辑调色板 LOGPALETTE结构,并利用该逻辑调色板结构初始化调色板对象。 UINT nSize=sizeof(LOGPALETTE) + (sizeof(PALETTEENT转载 2012-03-27 17:22:48 · 945 阅读 · 0 评论 -
LocalAlloc,VirtualAlloc,malloc,new的异同
1. 首先我们来看HeapAlloc:MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:LPVOIDHeapAlloc(转载 2012-03-27 15:05:52 · 761 阅读 · 0 评论 -
GDI DC通俗解释
转自:http://zhidao.baidu.com/question/113334182.html在GDI中,DC(Device context)是一个非常重要的概念。有的书中,将DC翻译为设备描述表(《Windows 程序设计 第五版》作者Charles Petzold),也有的书将DC翻译为设备上下文。到底什么是DC?用现实中的例子来理解可能更容易些。转载 2013-10-17 12:12:17 · 1294 阅读 · 0 评论