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);
}