Win32API的小问题
API编程跟windows编程区别:
1.API是控制台应用程序,就是运行时出现一个就像dos黑色窗口,而widows程序设计是窗口应用程序,就像WORD,记事本等这样的有窗口框架的程序设计。
编程思想不同,API语言是面向过程的,可以理解为顺序的执行;而Widows是面向过程的,事件触发,模块化的编程思想,如果学过VB的话就很容易理解。
另外API的程序入口函数是main,windows程序的入口函数是Winmain,windows定义了很多句柄和宏定义,刚开始理解起来有些困难,比如int WINAPI WinMain (HINSTANAPIE hThisInstanAPIe, HINSTANAPIE hPrevInstanAPIe, LPSTR lpszArgument, int nFunsterStil) 。
2.windows编程和API语言的主要区别是,API++不是专门为Windows程序所发明的语言,其它平台,如MaAPI和Linux都可以用API++,只不过Visual API++在它们上没办法运行就是了。另外一点,API++不是Java,不带自己的图形界面设计包。所以面向用户的界面要由其它程序来完成,这才是VAPI的主要目的,单纯用API++是不行的。
简单地说就是利用windows的应用程序接口(API),编写windows程序。如果用API,就是直接用这些API。如果用API,就用MFAPI(微软基础类库,封装了windows 的API)。
我找到我需要的pywin32, 这里也为以后方便像我这样的初学者,
下面是相关下载地址, 找了很久才找到的喔,
http://sourceforge.net/project/showfiles.php?group_id=78018
BUTTON 就是 一个按钮,EDIT是 文本框,LISTBOX 是列表框,
这些都是一些基本控件,但是windows api 中他们都是窗口 需要用CreateWindow函数创建
象UTTON,EDIT,LISTBOX....都是已经写好的窗口 "类"
也可以自己写
==============================
很多啊
你自己查MSDN
用法都写的很详细
函数功能:该函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的)。该函数也指定该窗口的父窗口或所属窗口(如果存在的话),及窗口的菜单。若要使用除CreateWindow函数支持的风格外的扩展风格,则使用CreateWindowEx函数代替CreateWindow函数。
函数原型:HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HANDLE hlnstance,LPVOID lpParam);
参数:
lpClassName:指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用theGlobalAddAtom函数产生的全局量。这个小于0xC000的16位数必须是lpClassName参数字的低16位,该参数的高位必须是0。
如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClassEx注册的类名,或是任何预定义的控制类名。请看说明部分的列表。
LPWindowName:指向一个指定窗口名的空结束的字符串指针。
如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用Createwindow函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。
dwStyle:指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。风格意义:
WS_BORDER:创建一个单边框的窗口。
WS_CAPTION:创建一个有标题框的窗口(包括WS_BODER风格)。
WS_CHIlD:创建一个子窗口。这个风格不能与WS_POPVP风格合用。
WS_CHLDWINDOW:与WS_CHILD相同。
WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。
WS_CLlPBLINGS;排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。
WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗日不能接受来自用户的输人信息。
WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。
WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。
WS_HSCROLL:创建一个有水平滚动条的窗口。
WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。
WS_MAXIMIZE:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。
WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。
WS_OVERtAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。
WS_POPUP;创建一个弹出式窗口。该风格不能与WS_CHLD风格同时使用。
WS_POPUWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。
WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。
WS_SYSMENU:创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格。
WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。
WS_THICKFRAME:创建一个具有可调边框的窗口,与WS_SIZEBOX风格相同。
WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。
WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU MS_THICKFRAME.
WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。
WS_VISIBLE:创建一个初始状态为可见的窗口。WS_VSCROLL:创建一个有垂直滚动条的窗口。
X:指定窗口的初始水平位置。对一个层叠或弹出式窗口,X参数是屏幕坐标系的窗口的左上角的初始X坐标。对于子富口,x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为CW_UCEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效,如果为弹出式窗口或子窗口设定,则X和y参数被设为零。
Y:指定窗口的初始垂直位置。对一个层叠或弹出式窗日,y参数是屏幕坐标系的窗口的左上角的初始y坐标。对于子窗口,y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框,y是列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创建的并且X参数被设为CW_USEDEFAULT,则系统将忽略y参数。
nWidth:以设备单元指明窗口的宽度。对于层叠窗口,nWidth或是屏幕坐标的窗口宽度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT,则系统为窗口选择一个缺省的高度和宽度:缺省宽度为从初始X坐标开始到屏幕的右边界,缺省高度为从初始X坐标开始到目标区域的顶部。CW_USEDFEAULT只参层叠窗口有效;如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。
nHelght:以设备单元指明窗口的高度。对于层叠窗口,nHeight是屏幕坐标的窗口宽度。若nWidth被设为CW_USEDEFAULT,则系统忽略nHeight参数。
hWndParent:指向被创建窗口的父窗口或所有者窗口的旬柄。若要创建一个子窗口或一个被属窗口,需提供一个有效的窗口句柄。这个参数对弹出式窗日是可选的。Windows NT 5.0;创建一个消息窗口,可以提供HWND_MESSAGE或提供一个己存在的消息窗口的句柄。
hMenu:菜单句柄,或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口,hMenu指定窗口使用的菜单:如果使用了菜单类,则hMenu可以为NULL。对于子窗口,hMenu指定了该子窗口标识(一个整型量),一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识,这个值对于相同父窗口的所有子窗口必须是唯一的。
hlnstance:与窗口相关联的模块事例的句柄。
lpParam:指向一个值的指针,该值传递给窗口 WM_CREATE消息。该值通过在IParam参数中的CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口,则lpParam必须指向一个CLIENTCREATESTRUCT结构。
返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。
备注:在返回前,CreateWindow给窗口过程发送一个WM_CREATE消息。对于层叠,弹出式和子窗口,CreateWindow给窗口发送WM_CREATE,WM_GETMINMAXINFO和WM_NCCREATE消息。消息WM_CREATE的IParam参数包含一个指向CREATESTRUCT结构的指针。如果指定了WS_VISIBLE风格,CreateWindow向窗口发送所有需要激活和显示窗口的消息。
获取有关任务条是否为创建的窗口显示一个按钮的控制信息,参看Taskbar按钮的Visbility。
以下预定义的控制类可以在lpClassName参数中指定。注意在dwStyle参数中可以使用的相应的控制风格。
BUTTON按钮按钮是一个小矩形子窗口,用户可以点击来打开或关闭。按钮控制可以单独使用或包含在组中使用,可以为控制写标签或不写标签。当用户点击按钮控制时按钮的外观有明显的改变。请参看Button。查看dwStyle参数中指定的按钮风格表请参考Button Style。
COMBOBOX组合框由一个列表框和一个类似于编辑控制的选择域组成。在使用这个风格控制时,应用程序或者使列表框一直显示或者是作成一个下拉列表。如果列表框可见,则在编辑域中输入字符将使列表框中与字符一致的第一个域高亮。反之,在列表框中选择的项将显示在编辑域中。请参看Combo Boxes。
查看dwStyle参数中指定的组合框风格表请参考Combo Boxes Style。
EDIT编辑框一个小的矩形子窗口用户可以使用键盘向其中输入文本。用户可以通过点击或按Tab键来选中编辑框控制并且使控制获得焦点。当编辑框中显示一个闪烁的插入记号时,用户可以输入文本。使用鼠标移动光标,选择被替换的字符或设置插入字符的位置或使用回退键删除字符。请参看Edit。controls。
查看dwStyle参数中指定的编辑框风格的表格请参考Edit Control Style。
LISTBOX列表框字符串的列表。当应用程序必须显示名称的列表,例如文件名列表等,使用户可以从中选择时就可指定列表框。用户可以通过单击来选择名称。选择时,被选择名高亮,同时传递给父窗口一个通知消息。请参看LiSt Box Style。查看dwStyle参数中指定的列表风格表请参考List BOX Control Style。
MDICLIENT MDI客户设计出MDI客户窗口。窗口接收控制MDI应用程序子窗口的消息。建议使用两种控制风格位:WS_CLIPCHILDREN和WS_CHILD。指定了WS_HSCROLL和WS_VSCROLL风格的MDI客户窗口允许用户将MDI子窗口滑动进入视窗。请参看MDI。
RiChEdit设计一个Rich Editl.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看Rich Edit Controls。查看dwStyle参数中指定的RichEdit风格表请参考LiSt Box Control Style。
RICHEDIT CLASS设计一个Rich Edik2.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看RichEditControls。查看dwStyle参数中指定的RichEdit风格表请参考RichEditControIStyle。
SCROLLBAR 滚动条设计的一个包含着一个滚动盒和两端有方向箭头的矩形。只要用户点击了控制,滚动条就给父窗口发送一个通知消息。如有必要,父窗口负责更新滚动条的位置。请参看ScrollBars。查看dwStyle参数中指定的滚动条风格表请参考Scroll Bars Style。
STATIC一个简单的静态文本域,文本盒或矩形用于给控制加标签,组合控制或将控制与其他控制分开。
静态控制不提供输入和也不提供输出。请参看Static Control Styles。查看dwStyle参数中指定的静态文本风格表请参考Scroll Bars Style。
Windows95:系统可以支持最大16,364个窗口句柄。
备注:如果在链接应用程序时指明是Windows 4.x版本,除非应用程序的窗口有窗口某单,否则窗口控制没有标题控制。对Windows3.x版本没有这种要求。
Windows CE:CreateWindow是以“宏”方式完成的。它被定义为CreateWindowEX,并且dwExStyle参数被置为长整数0。不支持菜单条控制,除非被声明为子窗口标志否则hMenu参数必须为NULL。不支持MDICLIENT窗口类。dwStyle参数可以是对话框(Dialogue Box),窗口(Windows),控制(Controls)文件中的窗口风格和控制风格的组合。
下列dwStyle标志在窗口中不支持:
WS_CHILDWINDOW WS_ICONC;WS_MAXMIZE WS_MAXIMIZEBOX;WS_MINIMIZE WS_MINIMIZEBOX;
WS_OVERLAPPEDWINDOW WS_POPUPWINDOW;WS_SIZEBOXWS_THICKFRAME WS_TILED WS_TILEDWINDOW
下列dwStyle标志在控制和对话框中不支持:
不支持的按钮风格和静态控制风格:
BS_LEFTTEXT SS_BLACKFRAME;BS_MULTILINE SS_GRAYFRAME BS_TEXT SS_METAPICT;BS_USERBUTTON SS_SIMPLE
不支持组合框SS_WHITERECT风格。
CBS_OWNERDRAWFIXED SS_BLACKRECT;CBS_OWNWEDRAWVARIABLE SS_GRAYRECT; CBS_SIMPLE8R旧HTrIMAGE
不支持列表框控制SS_WHITEFRAME风格。
LBS_NODATA
不支持的对话框风格:
LBS_OWNERDRAWFIXED DS_ABSALIGN; LBS_OWNERDRAWVARIABLE DS_CENTERMOUSE; LBS_STANDARD DS_CONTEXTHELP
不支持滚动条的 DS_FIXEDSYS风格
SBS_BOTTOMALIGN DS_NOFAILCREATE;SBS_RIGHTALIGN DS_NOIDLEMSG;
SBS_SlZEBOXBOTT0MRIHTALIGN DS_SYSMODAL;SBS_SIZEGRIP
可使用BS_OWNERDRAW风格来代替BS_USERBUTTON风格。
可使用SS_LEFT或SS_LEFTNOWORDWRAP风格来代替静态控制的SS_SIMPLE风格。
不支持MDICLIENT窗口类。
所有窗口都隐含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN风格。
Windows CE1.0版除对话框外不支持被属窗口。如果hwndParent参数不为NULL,则窗口隐含给出WS_CHILD风格。Windows CE1.0不支持菜单条。
vfp的API函数怎么用,完全没有概念,请大神赐教。
当出现“等待”窗口时,可在 5 秒的时间内按下 alt + tab 键切换到不同的 windows 应用程序,否则以活动的应用程序离开 visual foxpro。clear declare integer getactivewindow in win32api wait window "you can switch to another application now" timeout 5 ? getactivewindow( )...
API具体是什么
SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的...
求详细介绍Process32First这个API函数及其参数的用法
process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄.其原型为(用的是vfp) DECLARE INTEGER Process32First IN WIN32API ; INTEGER hSnapshot,STRING @ lppe 在C语言中如下 BOOL WINAPI Process...
怎样隐藏工作列中最小化后的那个视窗
怎样隐藏最小化的视窗? 无论你使用了什么语言编写的视窗程式 均可以使用windows32 API函式 ShowWindow(HWND hWnd,SW_HIDE) 来隐藏一个视窗 VB中怎样让视窗最小化后放入系统工作列? 你说的是把图示放入托盘吧 用API来做 Public Declare Function Shell_NotifyIcon Lib "shell32.dll" ...
VFP中的“.prg”文件在运行时,提示不能存取文件,该如何解决?
解决方案如下:DEFINE SW_NORMAL 1 && 窗口状态:正常大小# DEFINE SW_MAXIMIZE 3 && 窗口状态:最大化DECLARE integer FindWindow IN WIN32API integer,string && 获取应用程序窗口句柄DECLARE integer ShowWindow IN WIN32API integer,integer && 显示应用程序窗口DECLARE integer IsZoomed IN WIN3...
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL)这个实在...
HINSTANCE ShellExecute( HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd ); 学win32Api 必须要装个帮助文档(MSDN)才行.第一个NULL,如果打开的是一个可执行文件,此参数为运行.EXE的附加参数,是一个字符串.就相当于有些快捷方式后会添加一...
关于Visual foxpro6.0编程中用到的API函数的应用
先声明FindWindow API函数 DECLARE INTEGER FindWindow IN WIN32API STRING,STRING mHandle=FindWindow('Shell_TrayWnd','') &&取得系统工具条句柄 再声明ShowWindow API函数 DECLARE INTEGER ShowWindow IN WIN32API integer,integer =ShowWindow(mHandle,0) &&隐藏 =ShowWindow(mHandle,1) &&显示 ...
C加加语言是什么
根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。【子语言】根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成...
如何获取鼠标所在位置的xy坐标?
鼠标在窗体里面?那么就是Cursor属性 这个是个Cursor类 然后用Position属性.如果不是 可以用win32Api GetCursorPos Function 这样.Point p = new Point();GetCursorPos(p);p.x横坐标,p.y纵坐标.--- The GetCursorPos function retrieves the cursor's position, in screen coordinates.Syntax BOOL G...
用opengl画下图中的三角形
Win32API函数(WGL):5个,无前缀。 OpenGL的115个核心函数提供了最基本的功能,可以实 现三维建模、建立光照模型、反走样、纹理映射等;OpenGL实 用库函数在核心函数的上一层,这类函数提供了简单的调 用方法,其实质是调用核心函数,目的是减轻开发者的编程 工作量;OpenGL辅助库函数是一些特殊的函数,可以供初学者 ...
屠虽氨咖: 难道大年夜家大年夜来不会出现win32api缺点吗?我欲望获得指导:法度榜样的那些部分轻易导致这种缺点,源代码的情况是如许:一个sqlserver数据库萌芽法度榜样,有很多窗体界面,都是运行时生成的:procedure TForm_Main.N5Click(Sender: TObject); var a:TForm_lxgzsq_lr; a:=TForm_lxgzsq_lr.Create(self); a.Showmodal ; a.Free;beginend;因魏每次出问题都是打开某个窗口时,还有会不会和我应用的datemodul有关?我应用的query控件横多,有一些在datemodul上,有一些在窗体上.
东洲区19326777720: WIN 32 API编程问题 - ?
屠虽氨咖: LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {switch(uMsg){case WM_KEYDOWN:switch(wParam){case VK_LEFT:x-=3;SendMessage(hwnd,WM_KEYDOWN,VK_LEFT,0);return 0;case VK_RIGHT:x+=3;SendMessage(hwnd,WM_KEYDOWN,VK_RIGHT,0);return 0;}//看看这样行不行
东洲区19326777720: [求助]Win32 API文件读写问题?
屠虽氨咖: 第一个参数CodePage的说明CP_ACP ANSI code page CP_MACCP Not supported CP_OEMCP OEM code page CP_SYMBOL Not supported CP_THREAD_ACP Not supported CP_UTF7 UTF-7 code page CP_UTF8 UTF-8 code page 一般而...
东洲区19326777720: 有关于perl的关于win32::api的一些问题,求助! - ?
屠虽氨咖: 表示入参的类型和返回值的类型啊,这样才知道怎样正确的调用函数类型如下:I: value is an integer (int) N: value is a number (long) F: value is a floating point number (float) D: value is a double precision number (double) C: value is a char (char) ...
东洲区19326777720: c语言调用Win32API,ReadFile问题 - ?
屠虽氨咖: 你的代码逻辑上没有太大错误,只是对ReadFile的结果判断是否到文件尾部的方法不对,你可以参考MSDN的说明,当ReadFile读取到文件尾部时返回值为true,并且读取的字节数置0,你的代码可以做一下修改(以下代码测试通过):BOOL ...
东洲区19326777720: 请问在win32 api 下 为什么我的鼠标移动后程序会自动调用 WM - PAINT 消息,是不是哪儿有问题.?
屠虽氨咖: 鼠标移动系统要重画鼠标指针以及先前窗口被指针遮住的部分,当然要给窗口发送WM_PAINT消息,这是不可改变的.
东洲区19326777720: win32 API编程 添加控件不断拉住窗口改变大小,多次后,程序窗口便不能动了,卡住了,什么原因? - ?
屠虽氨咖: 可能是卡住了,建议开辟线程接收处理数据 ~和界面分开...
东洲区19326777720: win32 API编程 如果遇到不懂的地方该怎么做最好呢??
屠虽氨咖: 像这些应该是先复制 然后去读 如果实在看不了 可以先按死记方式背下 就当是1+1就该等于2这么先理解着 以后涉及的多了 自然会懂了 当然如果有人带的话请教就行了
东洲区19326777720: win32 api 读unicode字符的奇怪问题 - ?
屠虽氨咖: Windows控制台支持的不是Unicode,是MBCS(多字节字符串),一个汉字由两个字节组成,编码是GBK或GB18030,每个字节的值都大于127,在ASCII码里属于不可打印字符,当这两个字节连在一起的时候,控制台根据当前系统的代码页,认为这是一个汉字,所以把这两个字节作为汉字显示,这个工作是由控制台,也就是cmd.exe来完成,与程序无关.这种处理汉字的方式是从DOS时代继承而来的.当两个字符中间是空格的时候,相邻的两个字节无法构成一个汉字的编码,而每一个字节都是不可打印字符,所以输出是?
东洲区19326777720: win32 api CreateFile 和 WriteFile 问题?
屠虽氨咖: #include "stdafx.h" #include <windows.h> int main(int argc, char* argv[]) { HANDLE hFile=::CreateFile("test.txt", GENERIC_ALL,//文件操作方式,读写删都可 0,//此标示无法再创建test.txt文件,必须关闭句柄才可 NULL,//一般高级文...