DemoCustom.cpp
上传用户:fjqzjn
上传日期:2008-01-21
资源大小:2764k
文件大小:5k
源码类别:

Windows CE

开发平台:

Visual C++

  1. /******************************************************************************
  2. ** Copyright (C) 2004. Intel Corporation. All Rights Reserved. 
  3. **
  4. ** The source code contained or described herein and all documents related to the
  5. ** source code ("Material") are owned by Intel Corporation or its suppliers or 
  6. ** licensors. Title to the Material remains with Intel Corporation or its suppliers
  7. ** and licensors. The Material contains trade secrets and proprietary and 
  8. ** confidential information of Intel or its suppliers and licensors. The Material 
  9. ** is protected by worldwide copyright and trade secret laws and treaty provisions.
  10. ** No part of the Material may be used, copied, reproduced, modified, published, 
  11. ** uploaded, posted, transmitted, distributed, or disclosed in any way without 
  12. ** Intel抯 prior express written permission.
  13. ** 
  14. ** No license under any patent, copyright, trade secret or other intellectual 
  15. ** property right is granted to or conferred upon you by disclosure or delivery 
  16. ** of the Materials, either expressly, by implication, inducement, estoppel or 
  17. ** otherwise. Any license under such intellectual property rights must be express 
  18. ** and approved by Intel in writing.
  19. ******************************************************************************/
  20. // DemoCustom.cpp: implementation of the CDemoCustom class.
  21. //
  22. //////////////////////////////////////////////////////////////////////
  23. #include "stdafx.h"
  24. #include "aygshell.h"
  25. #include "DispDemo1.h"
  26. #include "DemoCustom.h"
  27. #include <gx.h>
  28. #ifdef _DEBUG
  29. #undef THIS_FILE
  30. static char THIS_FILE[]=__FILE__;
  31. #define new DEBUG_NEW
  32. #endif
  33. //////////////////////////////////////////////////////////////////////
  34. // Construction/Destruction
  35. //////////////////////////////////////////////////////////////////////
  36. CDemoCustom::CDemoCustom(WORD wWidth, WORD wHeight)
  37. {
  38. RawFrameBufferInfo* pExternalOutput = m_DisplayConfig.CreateMarathonFrameBuffer(wWidth, wHeight);
  39. if (!pExternalOutput || !pExternalOutput->pFramePointer)
  40. {
  41. TRACE(L"nr************************ Unable to use extenral display at requested resolution *****************nr");
  42. return;
  43. }
  44. TRACE(L"nrDrawing white border and blue diagonal in %d x %d Frane Buffer nr",pExternalOutput->cxPixels, pExternalOutput->cyPixels);
  45. for (int y=0; y < pExternalOutput->cyPixels; y++)
  46. {
  47. for (int x=0; x < pExternalOutput->cxPixels; x++)
  48. {
  49. PWORD pPixel = (PWORD)((PBYTE)pExternalOutput->pFramePointer + 
  50. (y * pExternalOutput->cyStride) + 
  51. (x * pExternalOutput->cxStride));
  52. if ((x == 0) || //left
  53. (x == pExternalOutput->cxPixels-1) || // right
  54. (y == 0) || // top
  55. (y == pExternalOutput->cyPixels-1) // bottom
  56. )
  57. *pPixel = 0xFFFF; // WHITE
  58. else if (x == y) // diaginal
  59. *pPixel = 0x001F; // BLUE
  60. else
  61. *pPixel = 0x0; // BLACK
  62. }
  63. }
  64. RawFrameBufferInfo* pXScaleFB = m_DisplayConfig.GetXScaleFrameBuffer();
  65. TRACE(L"nrDrawing small white close box into system memory that XScale's frame buffer.nr");
  66. for (y=0; y < pXScaleFB->cyPixels; y++)
  67. {
  68. for (int x=0; x < pXScaleFB->cxPixels; x++)
  69. {
  70. PWORD pPixel = (PWORD)((PBYTE)pXScaleFB->pFramePointer + 
  71. (y * pXScaleFB->cyStride) + 
  72. (x * pXScaleFB->cxStride));
  73. if ((x < 32) && (y < 32))
  74. { // in close box area?
  75. if ((x == 0) || (x == 32-1) || (y == 0) || (y == 32-1) || (x == y) || ((32-1-x) == y))
  76. *pPixel = 0xFFFF;// WHITE
  77. else
  78. *pPixel = 0x0; // BLACK
  79. }
  80. else
  81. *pPixel = 0x001F; // BLUE
  82. }
  83. }
  84. // Create a window to recieve touch screen inputs
  85. m_hWnd = CreateWindow(L"Static", L"MyInputWindow", WS_VISIBLE,
  86.   CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  87.   CW_USEDEFAULT, NULL, NULL, AfxGetInstanceHandle(), NULL);
  88. SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON |  SHFS_HIDESTARTICON);
  89. MoveWindow(m_hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), TRUE);  
  90. SetCapture(m_hWnd);
  91. // now switch to display it
  92. m_DisplayConfig.SetInternalSource(DCFG_SOURCE_XSCALE);
  93. m_DisplayConfig.SetExternalSource(DCFG_SOURCE_MARATHON);
  94. MSG msg;
  95. while (GetMessage(&msg, m_hWnd, WM_MOUSEFIRST, WM_MOUSELAST)) 
  96. {
  97. TranslateMessage(&msg);
  98. DispatchMessage(&msg);
  99. WORD xPos = LOWORD(msg.lParam); 
  100. WORD yPos = HIWORD(msg.lParam);
  101. TRACE(L"nrScreen Tap at %d x %dnr", xPos, yPos);
  102. if ((xPos < 32) && (yPos < 32)) // assuming Carbonado-like rotated display.  Looking for click withing box in XScale buffer
  103. DestroyWindow(m_hWnd);
  104. }
  105. SHFullScreen(m_hWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON |  SHFS_SHOWSTARTICON);
  106. }
  107. CDemoCustom::~CDemoCustom()
  108. {
  109. }