最底層的滑鼠雙擊代碼

來源:互聯網
上載者:User

 

//   標頭檔包含      檔案中包含應用程式中所需的資料類型和資料結構定義#include<windows.h>#define ID_LDBCLK 1001#define ID_RDBCLK 1002#define WM_LDBCLK WM_USER +101#define WM_RDBCLK WM_USER +102//  視窗過程函式宣告LRESULT CALLBACK WinProc( HWND hwnd,  UINT uMsg,  WPARAM wParam,  LPARAM lParam ); //  程式的入口處:WinMain函數int WINAPI WinMain(   HINSTANCE hInstance,      // handle to current instance   HINSTANCE hPrevInstance,  // handle to previous instance   由於windows95以及以後的   //                               windows版本都是獨立的進程空間,因此它的值總是NULL   LPSTR lpCmdLine,          // command line   int nCmdShow              // show state   ){char lpszClassname[]="視窗";            // 視窗類別名char lpszTitle[]="My_Windows";         //  視窗標題名//  視窗類別的定義WNDCLASS wc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);wc.hInstance=hInstance;wc.lpfnWndProc=WinProc;wc.lpszClassName=lpszClassname;wc.lpszMenuName=NULL;                                 // 視窗中無菜單wc.style=CS_HREDRAW|CS_VREDRAW;//    註冊視窗類別,如果註冊失敗則發出警告聲音if(!RegisterClass(&wc)){MessageBeep(0);return FALSE;}//     建立視窗HWND hwnd;hwnd=CreateWindow(lpszClassname,lpszTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);     // 顯示視窗UpdateWindow(hwnd);                 // 更新視窗    繪製使用者區//  訊息迴圈MSG msg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return 0;}//  視窗過程函數(回呼函數 callback),該函數處理視窗上的各種輸入事件,在此添加代碼LRESULT CALLBACK WinProc( HWND hwnd,  UINT uMsg,  WPARAM wParam,  LPARAM lParam ){HDC hdc;PAINTSTRUCT ps;static BOOL FLAG1,FLAG2;static BOOL DArc,DRetangl,DPie,DLine;switch(uMsg){case WM_LBUTTONDOWN:if(!FLAG1){FLAG1=TRUE;SetTimer(hwnd,ID_LDBCLK ,GetDoubleClickTime(),NULL);}else{KillTimer(hwnd,ID_LDBCLK);FLAG1=FALSE;            PostMessage(hwnd,WM_LDBCLK,0,0);}break;case WM_RBUTTONDOWN:if(!FLAG2){FLAG2=TRUE;SetTimer(hwnd,ID_RDBCLK ,GetDoubleClickTime(),NULL);}else{KillTimer(hwnd,ID_RDBCLK);FLAG2=FALSE;            PostMessage(hwnd,WM_RDBCLK,0,0);}break;case WM_TIMER:switch(wParam){case ID_LDBCLK:KillTimer(hwnd,ID_LDBCLK);            FLAG1=FALSE;DArc=~DArc;InvalidateRect(hwnd,NULL,1);break;case ID_RDBCLK:KillTimer(hwnd,ID_RDBCLK);            FLAG2=FALSE;DPie=~DPie;InvalidateRect(hwnd,NULL,1);break;}break;case WM_LDBCLK:KillTimer(hwnd,ID_LDBCLK);DRetangl=~DRetangl;        InvalidateRect(hwnd,NULL,1);break;case WM_RDBCLK:KillTimer(hwnd,ID_RDBCLK);DLine=~DLine;        InvalidateRect(hwnd,NULL,1);break;case WM_PAINT:hdc=BeginPaint(hwnd,&ps);if(DArc){Arc(hdc,63,137,138,212,100,137,100,137);break;}if(DRetangl){Rectangle(hdc,213,212,287,250);break;}if(DPie){Pie(hdc,213,137,288,212,240,137,260,137);break;}if(DLine){LineTo(hdc,50,50);break;}EndPaint(hwnd,&ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam);}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.