日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]??1?#include2?#include3?#include?"resource.h" ??4? ??5?#define?MAX_LOADSTRING?100 ??6?TCHAR?szTitle[

??1?#include2?#include3?#include?"resource.h"
??4?
??5?#define?MAX_LOADSTRING?100
??6?TCHAR?szTitle[MAX_LOADSTRING]?=?_T("標題欄");?????//?標題欄文本
??7?TCHAR?szWindowClass[MAX_LOADSTRING]?=?_T("MyClass");???//?主窗口類名
??8?
??9?
?10?ATOM?ToRegisterClass(HINSTANCE?hInstance,?int?nShowCmd);//注冊窗口類
?11?HWND?ToCreateWindow(LPCTSTR?lpClassName,LPCTSTR?lpWindowName,DWORD?dwStyle,int?x,?int?y,?int?nWidth,int?nHeight,?HWND?hWndParent,HMENU?hMenu,HINSTANCE?hInstance,LPVOID?lpParam);//創(chuàng)建窗口
?12?BOOL?ToShowWindow(HWND?hWnd,?int?nCmdShow);//顯示窗口
?13?BOOL?ToUpdateWindow(HWND?hWnd);//更新窗口
?14?WPARAM?ToRecycleMessage(MSG?msg);//消息循環(huán)
?15?LRESULT?CALLBACK?ToWndProc(HWND?hWnd,UINT?message,?WPARAM?wParam,?LPARAM?lParam);//窗口過程
?16?
?17??//——————————————————————————進入WinMain函數————————————————————————————
?18?int?WINAPI?WinMain(?HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,?LPSTR?lpCmdLine,?int?nShowCmd?)
?19?{
?20??//————————————————————————————第一步:設計并注冊窗口類————————————————————————————
?21??ToRegisterClass(hInstance,?nShowCmd);//當前實例句柄,窗口顯示方式
?22?
?23??//————————————————————————————第二步:創(chuàng)建窗口————————————————————————————
?24??HWND?hWnd?=?ToCreateWindow(szWindowClass,?szTitle,?WS_OVERLAPPEDWINDOW,?CW_USEDEFAULT,?0,?CW_USEDEFAULT,?0,?NULL,?NULL,?hInstance,?NULL);
?25??
?26??//————————————————————————————第三步:顯示窗口————————————————————————————
?27??ToShowWindow(hWnd,?nShowCmd);
?28?
?29??//————————————————————————————第四步:更新窗口————————————————————————————
?30??ToUpdateWindow(hWnd);
?31?
?32??//————————————————————————————第五步:消息循環(huán)————————————————————————————
?33??MSG?msg;
?34??return?ToRecycleMessage(&msg);//MSG結構的wParam成員的值是傳遞給PostQuitMessage函數參數,通常是0。
?35?}
?36?
?37?ATOM?ToRegisterClass(HINSTANCE?hInstance,?int?nShowCmd)
?38?{
?39??WNDCLASS?lpWndClass;
?40??lpWndClass.cbClsExtra?=?0;//窗口類無擴展
?41??lpWndClass.cbWndExtra?=?0;//窗口實例無擴展
?42??lpWndClass.hbrBackground?=?(HBRUSH)GetStockObject(WHITE_BRUSH);//背景
?43??lpWndClass.hCursor?=?LoadCursor(NULL,?IDC_ARROW);//鼠標
?44??lpWndClass.hIcon?=?LoadIcon(hInstance,MAKEINTRESOURCE(IDB_PNG1));//圖標
?45??lpWndClass.hInstance?=?hInstance;
?46??lpWndClass.lpfnWndProc?=?ToWndProc;//窗口函數
?47??lpWndClass.lpszClassName?=?szWindowClass;//窗口類名
?48??lpWndClass.lpszMenuName?=?NULL;//菜單名
?49??lpWndClass.style?=?CS_HREDRAW?|?CS_VREDRAW;//風格
?50??return?RegisterClass(&lpWndClass);
?51?}
?52?
?53?HWND?ToCreateWindow(LPCTSTR?lpClassName,LPCTSTR?lpWindowName,DWORD?dwStyle,int?x,?int?y,?int?nWidth,int?nHeight,?HWND?hWndParent,HMENU?hMenu,HINSTANCE?hInstance,LPVOID?lpParam)
?54?{
?55??return?CreateWindow(lpClassName,?lpWindowName,?dwStyle,?x,?y,?nWidth,?nHeight,?hWndParent,?hMenu,?hInstance,?lpParam);
?56?}
?57?
?58?BOOL?ToShowWindow(HWND?hWnd,?int?nCmdShow)
?59?{
?60??return?ShowWindow(hWnd,?nCmdShow);
?61?}
?62?
?63?BOOL?ToUpdateWindow(HWND?hWnd)
?64?{
?65??return?UpdateWindow(hWnd);//???調用UpdateWindow函數會通過發(fā)送給窗口消息處理函數WndProc一個WM_PAINT消息,通過這個消息完成重繪顯示區(qū)域的工作。
?66?}
?67?
?68?WPARAM?ToRecycleMessage(MSG?*msg)
?69?{
?70??int?nRet;
?71??while(nRet?=?GetMessage(msg,?NULL,?0,?0)?!=?0)//收到WM_QUIT消息則跳出消息循環(huán)
?72??{
?73???if?(nRet?==?-1)
?74???{
?75????return;
?76???}
?77???TranslateMessage(msg);//翻譯消息
?78???DispatchMessage(msg);//分發(fā)消息
?79??}
?80??return?msg->wParam;
?81?}
?82?
?83?//窗口過程函數:處理窗口消息
?84?LRESULT?CALLBACK?ToWndProc(HWND?hWnd,UINT?uMsg,?WPARAM?wParam,?LPARAM?lParam)
?85?{
?86??DWORD?dwNum?=?0;
?87??wchar_t?*?pwSrc;
?88??RECT?rect;
?89??PAINTSTRUCT?ps;//創(chuàng)建繪制對象結構
?90??HDC?hdc?=?NULL;//創(chuàng)建設備描述句柄對象
?91??static?HWND?hwndButton[3]?=?{NULL,NULL,NULL};
?92??switch(uMsg)
?93??{
?94??case?WM_COMMAND://處理按鈕等發(fā)出的消息
?95???break;
?96??case?WM_CHAR://處理鍵盤發(fā)出的消息
?97???break;
?98??case?WM_CLOSE://關閉窗口消息
?99???if?(IDYES?==?MessageBox(hWnd,?_T("結束?"),?_T("提示"),?MB_YESNO))
100???{
101????DestroyWindow(hWnd);
102???}
103???break;
104??case?WM_DESTROY://處理WM_DESTROY消息必須調用PostQuitMessage函數,該函數向消息隊列中發(fā)送WM_QUIT消息,讓程序退出消息循環(huán)。
105???PostQuitMessage(0);
106???break;
107??default:
108???return?DefWindowProc(hWnd,?uMsg,?wParam,?lParam);//默認的窗口處理函數
109???break;
110??}
111??return?0;
112?}
113?
114

?

?1?HWND?CreateWindow(??????
?2?
?3?????LPCTSTR?lpClassName,//注冊的窗口類型名稱。
?4?????LPCTSTR?lpWindowName,//窗口名稱
?5?????DWORD?dwStyle,//窗口類型
?6?????int?x,//窗口左上角位置
?7?????int?y,//窗口左上角位置
?8?????int?nWidth,//窗口的寬度
?9?????int?nHeight,//窗口的高度
10?????HWND?hWndParent,//父窗口
11?????HMENU?hMenu,//窗口菜單
12?????HINSTANCE?hInstance,//應用程序實例句柄
13?????LPVOID?lpParam//傳送給窗口的自定義參數
14?);

?

?1?BOOL?GetMessage(?????????
?2?????LPMSG?lpMsg,//從線程消息隊列里獲取到的消息指針
?3?????HWND?hWnd,//想獲取那個窗口的消息,當設置為NULL時是獲取所有窗口的消息。
?4?????UINT?wMsgFilterMin,//獲取消息的ID編號最小值,如果小于這個值就不獲取回來。
?5?
?6?????UINT?wMsgFilterMax//獲取消息的ID編號最大值,如果大于這個值就不獲取回來。
?7?);
?8?
?9?//一般情況下最后兩個參數都設置為0,表示所有消息
10?
11??????函數返回值可能是0,大于0,或者等于-1。如果成功獲取一條非WM_QUIT消息時,就返回大于0的值;如果獲取WM_QUIT消息時,就返回值0值。如果出錯就返回-1的值。

?

nCmd:窗口顯示方式,參數如下:

?1?SW_FORCEMINIMIZE  是強制窗口最小化,主要使用在非窗口主線程的其它線程來操作。
?2?SW_HIDE  是顯示窗口為隱藏狀態(tài)。
?3?SW_MAXIMIZE  是顯示窗口為最大化。
?4?SW_MINIMIZE  是顯示窗口為最小化。
?5?SW_RESTORE  是從任務里恢復窗口顯示。
?6?SW_SHOW  是激活窗口為當前窗口,并且顯示為當前的大小和位置。
?7?SW_SHOWDEFAULT  是創(chuàng)建進程時顯示窗口的值。
?8?SW_SHOWMAXIMIZED  是激活窗口為當前窗口,并且顯示最大化。
?9?SW_SHOWMINIMIZED  是激活窗口為當前窗口,并且顯示最小化。
10?SW_SHOWMINNOACTIVE  是顯示窗口為最小化,但不激活它作為當前窗口。
11?SW_SHOWNA  是顯示為當前的大小和位置,但不激活它作為當前窗口。
12?SW_SHOWNOACTIVATE  是顯示當前窗口,但不激活它作為當前窗口。
13?SW_SHOWNORMAL  是顯示當前窗口,但窗口是最小化或最大化時會恢復窗口為原來的大小和位置。

?

?

TranslateMessage:

?  用來把虛擬鍵消息轉換為字符消息。由于Windows對所有鍵盤編碼都是采用虛擬鍵的定義,這樣當按鍵按下時,并不得字符消息,需要鍵盤映射轉換為字符的消息。
  TranslateMessage函數用于將虛擬鍵消息轉換為字符消息。字符消息被投遞到調用線程的消息隊列中,當下一次調用GetMessage函數時被取出。當我們敲擊鍵盤上的某個字符鍵時,系統(tǒng)將產生WM_KEYDOWN和WM_KEYUP消息。這兩個消息的附加參數(wParam和lParam)包含的是虛擬鍵代碼和掃描碼等信息,而我們在程序中往往需要得到某個字符的ASCII碼,TranslateMessage這個函數就可以將WM_KEYDOWN和WM_ KEYUP消息的組合轉換為一條WM_CHAR消息(該消息的wParam附加參數包含了字符的ASCII碼),并將轉換后的新消息投遞到調用線程的消息隊列中。注意,TranslateMessage函數并不會修改原有的消息,它只是產生新的消息并投遞到消息隊列中。
  也就是說TranslateMessage會發(fā)現消息里是否有字符鍵的消息,如果有字符鍵的消息,就會產生WM_CHAR消息,如果沒有就會產生什么消息。

?

?

PostQuitMessage:

  nExitCode是退出標識碼,它被放到WM_QUIT消息的參數wParam里。

  VOID  PostQuitMessage(int nExitCode);

  當點擊窗口右上角的關閉時,Windows就會把窗口從系統(tǒng)里刪除,這時就會發(fā)出消息WM_DESTROY給窗口消息處理函數WindowProc,WindowProc收到這條消息后,最需要做的一件事情就是調用PostQuitMessage發(fā)出退出消息,讓消息循環(huán)結束。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉