A. windows编程,如何处理按钮事件
改用VB吧。非常简单实现控件触发。
B. windows编程是什么
windows 编程就是编译的程序可以在windows环境下运行 可以用的语言很多了,如VB,VC,Delphi,java,C#等等,很多编程软件要调用系统的API函数,MFC,微软基础类(Microsoft Foundation Classes),同VCL(delphi的库)类似,是一种Application Framework,随微软Visual C++ 开发工具发布。
C. 什么是事件驱动编程机制
事件驱动编程机制为需要处理的事件编写相应的事件处理程序
要理解事件驱动和程序,就需要与非事件驱动的程序进行比较。
实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定是事件驱动的。
早期则存在许多非事件驱动的程序,这样的程序,在需要等待某个条件触发时,会不断地检查这个条件,直到条件满足,这是很浪费cpu时间的。
而事件驱动的程序,则有机会释放cpu从而进入睡眠态(注意是有机会,当然程序也可自行决定不释放cpu),当事件触发时被操作系统唤醒,这样就能更加有效地使用cpu。
(3)windows事件编程扩展阅读:
为需要处理的事件编写相应的事件处理程序。代码在事件发生时执行。
delphi和java编程特点
n事件(event)表示程序某件事发生的信号,事件分为:
o外部事件:由外部用户动作产生的事件。例如,点击鼠标、按键盘。
o内部事件:由系统内部产生的事件。例如,定时器事件。
n源对象(source object)是产生事件的对象。
D. 在Windows编程中,什么是事件驱动,什么是消息
消息就是按键盘或鼠标被操作系统捕获的一个信号,被表示为WM_XXX的这种形式,事件,可以这么理解,比如执行某个函数,处理了某条指令,或处理一个中断,你别理解这么深,刚学程序多练练手,练多了这些东西就有感觉了
E. [Windows 编程] 如何截获 Alt+Tab 事件
因此,该键盘消息 (WM_KEYDOWN/UP) 是直接发给系统内核, 在应用程序中的消息循环中截获不到。
方案之一就是用底层的键盘钩子,截获整个系统的键盘输入。但这样做会导致一些效率以及稳定性问题。
另外一个比较方便安全的方案就是用 Windows Accessbility API 的 SetWinEventHook 函数, 监听 EVENT_SYSTEM_SWITCHSTART 和 EVENT_SYSTEM_SWITCHEND 事件。
这2个事件就是对应用户按下Alt+Tab键 以及 松开 Alt+Tab键,下面是MSDN的解释:
EVENT_SYSTEM_SWITCHSTART The user has pressed ALT+TAB, which activates the switch window. This event is sent by the system, never by servers. The hwnd parameter of the WinEventProc callback function identifies the window to which the user is switching.
If only one application is running when the user presses ALT+TAB, the system sends an EVENT_SYSTEM_SWITCHEND event without a corresponding EVENT_SYSTEM_SWITCHSTART event.
EVENT_SYSTEM_SWITCHEND The user has released ALT+TAB. This event is sent by the system, never by servers. The hwnd parameter of the WinEventProc callback function identifies the window to which the user has switched.
//安装Event Hook
void InstallEventHook(){g_hWinEventhook = ::SetWinEventHook(
EVENT_SYSTEM_SWITCHSTART , EVENT_SYSTEM_SWITCHEND, // NULL, // Handle to DLL.
s_HandleWinEvent, // The callback.
0, 0, // Process and thread IDs of interest (0 = all)
WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS); // Flags.}
// 回调函数
F. C#如何在 Windows 窗体应用程序中使用事件
例如,当用户在窗体中单击 Button 控件时,该控件会引发一个事件。通过处理该事件,应用程序可以针对该按钮单击操作执行适当的应用程序逻辑。有关Windows 窗体的更多信息,请参见 Windows 窗体入门。处理Windows 窗体上的按钮单击事件1.创建一个具有 Button 控件的 Windows 窗体。private Button button; 2.定义一个与 Click 事件委托签名匹配的事件处理程序。Click 事件为该委托类型使用 EventHandler 类,而为该事件数据使用 EventArgs 类。 void Button_Click(object sender, EventArgs e)
{...} 3.将事件处理程序方法添加到 Button 的Click 事件。 button.Click +=new EventHandler(this.Button_Click);注意设计器(如 Visual Studio 2005)将通过生成与下面的示例中的代码类似的代码来为您执行此事件连接。示例下面的代码示例处理 Button 的Click 事件以改变 TextBox 的背景色。以粗体表示的元素显示了该事件处理程序以及它如何连结到 Button 的Click 事件。此示例中的代码不是使用可视设计器(例如 Visual Studio 2005)编写的,并且只包含基本的编程元素。如果您使用设计器,它将生成附加代码。using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
publicclass MyForm : Form{private TextBox box;
private Button button;
public MyForm() : base(){box =new TextBox();
box.BackColor = System.Drawing.Color.Cyan;
box.Size =new Size(100,100);
box.Location =new Point(50,50);
box.Text ="Hello";
button =new Button();
button.Location =new Point(50,100);
button.Text ="Click Me";
// To wire the event, create
// a delegate instance and add it to the Click event. button.Click +=new EventHandler(this.Button_Click);
Controls.Add(box);
Controls.Add(button);}// The event handler.privatevoid Button_Click(object sender, EventArgs e){box.BackColor = System.Drawing.Color.Green;}// The STAThreadAttribute indicates that Windows Forms uses the
// single-threaded apartment model. [STAThreadAttribute]
publicstaticvoid Main(string[] args){Application.Run(new MyForm());}}编译代码将上面的代码保存到一个文件(对于 C# 文件,扩展名为 .cs,对于 Visual Basic 2005,扩展名为 .vb)中,进行编译,然后执行。例如,如果源文件名为 WinEvents.cs(或 WinEvents.vb),请执行下面的命令。
G. 简述Windows编程的特点
一个Windows应用程序具有以下的特性: 事件驱动程序设计、消息循环与输入、图形输出、用户界面对象、资源共享、动态链接库等等。
1、事件驱动的程序设计
传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。
控制台应用程序与Windows应用程序的根本区别在于前者是通过调用系统函数来获得用户输入的,而Windows程序则是通过系统发送消息来处理用户输入的。
2、消息循环与输入
事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。事件驱动是靠消息循环机制来实现的。输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。
3、图形输出
Windows程序不仅在输入上与DOS程序不同,而且在程序输出上也与DOS有着很大不同,主要表现为:DOS程序独占整个显示屏幕,其他程序在后台等待。而Windows的每一个应用程序对屏幕的一部分进行处理。
DOS程序可以直接往屏幕上输出,而Windows是一个多窗口的操作系统,由操作系统来统一管理屏幕输出;每个窗口要输出内容时,必须首先向操作系统发出请求(GDI请求),由操作系统完成实际的屏幕输出工作。
(7)windows事件编程扩展阅读
Windows多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。
Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:向Windows系统请求资源;使用该资源;释放该资源给Windows以供别的程序使用。
在Windows应用程序设计中,CPU也是一种非常重要的资源,因此应用程序应当避免长时间的占用CPU资源(如一个特别长的循环);如果确实需要这样做,也应当采取一些措施,以让程序能够响应用户的输入。主存也是一个共享资源,要防止同时运行的多个应用程序因协调不好而耗尽内存资源。
H. 所谓的WIN编程是什么意思WIN也有API吗
WIN32编程就是对windows编程;以前的程序编写都是靠api,现在基本上所有的语言都对api 进行了封装,像c++ mfc框架把api都封装成了类,这样编程的速度就得到的很大的提高
API(Application Programming Interface,应用程序编程接口)是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么.
这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法. 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数. 。同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).
API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).
I. c++如何实现Windows窗口的按钮单击事件
你创建窗口之前,需要提供一个函数(回调函数),创建窗口之后,调用操作系统的API执行事件循环,后面与窗口相关的任何事件,操作系统都会通过调用回调函数来通知你。
//定义回调函数,鼠标按下时,操作系统会调用这个函数,把你处理鼠标按下操作的代码写在这里:
LRESULTWndProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam){
intx=0;
inty=0;
switch(uMsg){
caseWM_LBUTTONDOWN://WM_LBUTTONDOWN是鼠标左键按下的事件“枚举”
x=GET_X_LPARAM(lParam);//获取鼠标x坐标
y=GET_Y_LPARAM(lParam);//获取鼠标y坐标
break;
}
returnDefWindowProc(hwnd,uMsg,wParam,lParam);
}