亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? appmon.c

?? 一個windows顯示驅動的好程序
?? C
字號:
/**********************************************************************
 * 
 *  Toby Opferman
 *
 *  Example Application which uses shared memory to display the contents
 *  of a virtual second monitor
 *
 *  This example is for educational purposes only.  I license this source
 *  out for use in learning.
 *
 *  Copyright (c) 2005, All Rights Reserved  
 **********************************************************************/
 

                                                                     
#include <windows.h>
#include "appmon.h"
#include "virtualmonitor.h"

              


 /***********************************************************************
  * Internal APIs
  ***********************************************************************/
 LRESULT CALLBACK AppMon_WindowProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
 void AppMon_CreateHandler(HWND hWnd);
 void AppMon_PaintScreen(HWND hWnd);
 void AppMon_PaintScreenForce(HWND hWnd);
  void AppMon_HandleClose(HWND hWnd);
 VOID CALLBACK AppMon_VirtualMonitorRefresh(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);


 /***********************************************************************
  * AppMon_RegisterClass
  *  
  *    Registers the Window Class
  *
  * Parameters
  *     instance Handle
  * 
  * Return Value
  *     TRUE on Success, FALSE on Failure
  *
  ***********************************************************************/
 BOOL WINAPI AppMon_RegisterClass(HINSTANCE hInstance)
 {
     WNDCLASSEX WndClassEx = {0};

     WndClassEx.cbSize        = sizeof(WndClassEx);
     WndClassEx.style         = 0;
     WndClassEx.lpfnWndProc   = AppMon_WindowProc;
     WndClassEx.cbWndExtra    = 0;
     WndClassEx.hInstance     = hInstance;
     WndClassEx.hIcon         = NULL;
     WndClassEx.hCursor       = LoadCursor(hInstance, IDC_ARROW);
     WndClassEx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
     WndClassEx.lpszMenuName  = NULL;
     WndClassEx.lpszClassName = APPMON_CLASS_NAME;
     WndClassEx.hIconSm       = NULL;
     
     return RegisterClassEx(&WndClassEx);
 }



 /***********************************************************************
  * AppMon_CreateWindow
  *  
  *    Creates The Window
  *
  * Parameters
  *     instance Handle
  * 
  * Return Value
  *     Window Handle on Success, NULL on Failure
  *
  ***********************************************************************/
 HWND WINAPI AppMon_CreateWindow(HINSTANCE hInstance)
 {
     HWND hWnd = NULL;

     if(!FindWindow(APPMON_CLASS_NAME, NULL))
     {
        if(hWnd = CreateWindowEx(0, APPMON_CLASS_NAME, APPMON_TITLE, WS_SYSMENU | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_OVERLAPPED, 0,  0, APPMON_WINDOW_WIDTH, APPMON_WINDOW_HEIGHT, HWND_DESKTOP, NULL,  hInstance, NULL))
        {
            ShowWindow(hWnd, SW_SHOWNORMAL);
            UpdateWindow(hWnd);
        }
     }

     return hWnd;
 }



 /***********************************************************************
  * AppMon_MessageLoop
  *  
  *    Handles Window Messages to be dispatched to the Window
  *
  * Parameters
  *     instance Handle, Window Handle
  * 
  * Return Value
  *     Exit Value
  *
  ***********************************************************************/
 int WINAPI AppMon_MessageLoop(HINSTANCE hInstance, HWND hWnd)
 {
     MSG Msg = {0};
     BOOL bMessageLoop = TRUE;

     while(bMessageLoop)
     {
         if(GetMessage(&Msg, 0, 0, 0))
         {
             TranslateMessage(&Msg);
             DispatchMessage(&Msg);
        }
        else
        {
            bMessageLoop = FALSE;
        }
     }

     return Msg.wParam;
 }



 /***********************************************************************
  * AppMon_WindowProc
  *  
  *    Handles Window Messages Send to the window
  *
  * Parameters
  *     Standard Windows Proc Handler
  * 
  * Return Value
  *     Exit Value
  *
  ***********************************************************************/
 LRESULT CALLBACK AppMon_WindowProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
 {
     LRESULT dwRetValue = 0;

     switch(wMsg)
     {
         case WM_CREATE:
              AppMon_CreateHandler(hWnd);
              break;

         case WM_PAINT:
              AppMon_PaintScreen(hWnd);
              break;

         case WM_CLOSE:
              AppMon_HandleClose(hWnd);
              break;

         case WM_DESTROY:
              PostQuitMessage(0);
              break;

         default:
              dwRetValue = DefWindowProc(hWnd, wMsg, wParam, lParam);
     }

     return dwRetValue;
 }




 /***********************************************************************
  * AppMon_HandleClose
  *  
  *    Handle a close message
  *
  * Parameters
  *     Window Handle
  * 
  * Return Value
  *     None
  *
  ***********************************************************************/
 void AppMon_HandleClose(HWND hWnd)
 {
     HVMON hVirtualMonitor = (HVMON)GetWindowLong(hWnd, GWL_USERDATA);
     
     KillTimer(hWnd, MONITOR_REFRESH_TIMER);
     SetWindowLong(hWnd, GWL_USERDATA, 0);

     VirtualMonitor_Free(hVirtualMonitor);

     DestroyWindow(hWnd);
 }


 /***********************************************************************
  * AppMon_PaintScreen
  *  
  *    Handles a repaint of the screen
  *
  * Parameters
  *     Window Handle
  * 
  * Return Value
  *     None
  *
  ***********************************************************************/
 void AppMon_PaintScreen(HWND hWnd)
 {
     HVMON hVirtualMonitor = (HVMON)GetWindowLong(hWnd, GWL_USERDATA);
     HDC hDC, hMonitorDC;
     PAINTSTRUCT ps;
     RECT Rect;

     hMonitorDC = VirtualMonitor_GetVideoDC(hVirtualMonitor);
     hDC = BeginPaint(hWnd, &ps);

     GetClientRect(hWnd, &Rect);

     BitBlt(hDC, 0, 0, APPMON_CLIENT_WIDTH, APPMON_CLIENT_HEIGHT, hMonitorDC, 0, 0, SRCCOPY);

     EndPaint(hWnd, &ps);
     VirtualMonitor_ReleaseVideoDC(hVirtualMonitor, hMonitorDC);
 }
      

 /***********************************************************************
  * AppMon_PaintScreenForce
  *  
  *    Forces a screen re-paint
  *
  * Parameters
  *     Window Handle
  * 
  * Return Value
  *     None
  *
  ***********************************************************************/
 void AppMon_PaintScreenForce(HWND hWnd)
 {
     HVMON hVirtualMonitor = (HVMON)GetWindowLong(hWnd, GWL_USERDATA);
     HDC hDC, hMonitorDC;

     hMonitorDC = VirtualMonitor_GetVideoDC(hVirtualMonitor);
     hDC = GetDC(hWnd);

     BitBlt(hDC, 0, 0, APPMON_CLIENT_WIDTH, APPMON_CLIENT_HEIGHT, hMonitorDC, 0, 0, SRCCOPY);
     
     ReleaseDC(hWnd, hDC);
     VirtualMonitor_ReleaseVideoDC(hVirtualMonitor, hMonitorDC);
 }


 /***********************************************************************
 * AppMon_VirtualMonitorRefresh
 *  
 *    Processes a refresh of the Virtual Monitor Display
 *
 * Parameters
 *     Standard Timer Procedure
 * 
 * Return Value
 *     None
 *
 ***********************************************************************/
VOID CALLBACK AppMon_VirtualMonitorRefresh(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
    HVMON hVirtualMonitor = (HVMON)GetWindowLong(hwnd, GWL_USERDATA);

    VirtualMonitor_Update(hVirtualMonitor);

    AppMon_PaintScreenForce(hwnd);

}

 /***********************************************************************
  * AppMon_CreateHandler
  *  
  *    Processes the Initial Creation of the Window
  *
  * Parameters
  *     Window Handle
  * 
  * Return Value
  *     None
  *
  ***********************************************************************/
void AppMon_CreateHandler(HWND hWnd)
{
   HVMON hVirtualMonitor = NULL;

   hVirtualMonitor = VirtualMonitor_Initialize(hWnd);

   if(hVirtualMonitor == NULL)
   {
       DestroyWindow(hWnd);
   }
   else
   {
       SetWindowLong(hWnd, GWL_USERDATA, (ULONG)hVirtualMonitor);
    
       InvalidateRect(hWnd, NULL, FALSE);
    
       SetTimer(hWnd, MONITOR_REFRESH_TIMER, MONITOR_REFRESH_FREQ, (TIMERPROC)AppMon_VirtualMonitorRefresh);
   }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品网久久| 国产剧情一区在线| 日韩欧美在线一区二区三区| 激情综合色综合久久| 国产三级精品视频| 91麻豆自制传媒国产之光| 午夜影院久久久| 久久久久久久一区| 在线中文字幕一区| 国内精品免费**视频| 国产无一区二区| 欧美亚日韩国产aⅴ精品中极品| 日本伊人色综合网| 国产精品污网站| 精品视频免费在线| 黄色日韩网站视频| 亚洲综合免费观看高清完整版| 日韩欧美在线综合网| 91玉足脚交白嫩脚丫在线播放| 麻豆专区一区二区三区四区五区| 欧美国产精品v| 欧美久久久久久久久中文字幕| 国产传媒欧美日韩成人| 亚州成人在线电影| 国产日本一区二区| 欧美精品一卡二卡| 99久久久久久| 国产一区不卡视频| 午夜精品福利久久久| 欧美激情中文字幕一区二区| 56国语精品自产拍在线观看| 9久草视频在线视频精品| 免费观看在线色综合| 亚洲三级免费观看| 久久精品人人爽人人爽| 在线播放/欧美激情| 91麻豆swag| 国产成人久久精品77777最新版本| 日韩高清一区二区| 亚洲黄色在线视频| 中文字幕第一区第二区| 日韩欧美国产不卡| 3d动漫精品啪啪一区二区竹菊| 91在线观看下载| 成人av电影在线网| 精品综合免费视频观看| 日韩二区三区四区| 亚洲在线成人精品| 国产精品国产自产拍高清av| 精品av久久707| 正在播放一区二区| 欧美日韩另类一区| 色呦呦网站一区| 成人av电影在线网| 成人深夜在线观看| 国产精品456露脸| 狠狠网亚洲精品| 麻豆精品在线播放| 久久精品国产精品亚洲精品| 秋霞午夜鲁丝一区二区老狼| 日韩精彩视频在线观看| 亚洲成国产人片在线观看| 亚洲精品中文字幕乱码三区| 亚洲女同女同女同女同女同69| 国产精品免费丝袜| 国产精品久久毛片av大全日韩| 国产亚洲精品7777| 欧美韩国日本不卡| 国产精品拍天天在线| 欧美高清在线视频| 亚洲国产高清不卡| 中文字幕一区二区日韩精品绯色| 国产精品毛片a∨一区二区三区| 国产片一区二区| 中文字幕亚洲一区二区va在线| 国产精品免费视频观看| 亚洲美女屁股眼交3| 一二三四区精品视频| 亚洲高清免费在线| 日产国产欧美视频一区精品| 免费成人性网站| 国内成人精品2018免费看| 国产精品影音先锋| 99久久婷婷国产综合精品电影| 色成年激情久久综合| 欧美午夜精品一区二区三区| 欧美日韩精品二区第二页| 欧美高清一级片在线| 欧美一级片在线观看| 精品1区2区在线观看| 国产精品免费av| 一区二区视频在线| 蜜臀99久久精品久久久久久软件| 国产曰批免费观看久久久| 国产精品一区二区在线观看不卡| 成人影视亚洲图片在线| 欧美天堂亚洲电影院在线播放| 91麻豆精品国产91久久久更新时间| 日韩你懂的在线播放| 国产丝袜欧美中文另类| 一区二区三区在线观看国产| 日韩国产欧美在线观看| 国产高清亚洲一区| 在线观看av一区| 欧美成人性福生活免费看| 国产精品视频麻豆| 五月天婷婷综合| 国产精品一区二区果冻传媒| 色哟哟精品一区| 日韩欧美亚洲国产另类| 日本一区二区动态图| 亚洲一区二三区| 国内精品免费在线观看| 91福利在线播放| 久久网站最新地址| 一区二区三区四区蜜桃 | 国内精品自线一区二区三区视频| 成人高清伦理免费影院在线观看| 欧美三级在线看| 国产日韩三级在线| 石原莉奈在线亚洲三区| 成人福利视频网站| 欧美一区二区三级| 亚洲图片欧美激情| 精品亚洲成a人| 欧美中文字幕一区二区三区| 国产蜜臀97一区二区三区| 五月婷婷综合在线| 99国产欧美另类久久久精品| 欧美精品一区二区久久久| 亚洲精品国产成人久久av盗摄| 国产在线播放一区二区三区| 欧美高清一级片在线| 亚洲免费观看视频| 国产成人免费在线观看不卡| 538在线一区二区精品国产| **性色生活片久久毛片| 国产中文字幕精品| 在线不卡中文字幕播放| 亚洲欧美偷拍三级| 国产精品一区二区在线看| 日韩一区二区在线免费观看| 亚洲一区在线观看免费 | 欧美一区二区精美| 一区二区三区成人| caoporn国产一区二区| 久久久久久久免费视频了| 日本免费在线视频不卡一不卡二| 91久久精品国产91性色tv| 国产精品丝袜一区| 国产麻豆精品theporn| 日韩亚洲欧美高清| 日本va欧美va精品| 制服.丝袜.亚洲.另类.中文| 亚洲亚洲人成综合网络| 91女人视频在线观看| 国产精品成人午夜| 丁香婷婷综合色啪| 久久久蜜桃精品| 国产精品1区2区| 久久免费偷拍视频| 国产麻豆精品在线观看| 久久久午夜精品理论片中文字幕| 久久精品二区亚洲w码| 91精品在线免费| 日日夜夜免费精品| 在线不卡的av| 日本不卡视频在线观看| 91精选在线观看| 欧美久久久影院| 99re免费视频精品全部| 亚洲精品在线免费播放| 美女视频第一区二区三区免费观看网站| 国模一区二区三区白浆| 欧美mv日韩mv| 色哟哟一区二区在线观看| 欧美日韩国产大片| 久久久亚洲高清| 一二三四社区欧美黄| 久久er精品视频| 91免费国产在线观看| 91精品国产aⅴ一区二区| 国产色产综合色产在线视频| 亚洲精品国产品国语在线app| 天堂久久一区二区三区| 成人国产精品免费观看视频| 欧美日韩视频一区二区| 欧美激情一区二区三区不卡| 婷婷综合另类小说色区| 国产91丝袜在线播放| 欧美三级在线视频| 中日韩av电影| 欧美aaa在线| 97精品久久久久中文字幕| 欧美成人福利视频| 亚洲综合一区二区三区| 国产精品一线二线三线精华| 欧美男人的天堂一二区| 综合激情网...| 国产在线播放一区二区三区|