有关wince下校准界面的修改
发布时间:2020-12-15 06:32:32 所属栏目:百科 来源:网络整理
导读:1、在WINCE系统下有默认带有一个校准程序,应用程序可以通过调用API "TouchCalibrate()"来启动校准程序。 如果在你调用"TouchCalibrate"后编译出错或者调用不成功的话可以自己收到加载此函数如: typedef BOOL (WINAPI *_TouchCalibrate)(); HINSTANCE hinst
1、在WINCE系统下有默认带有一个校准程序,应用程序可以通过调用API "TouchCalibrate()"来启动校准程序。
如果在你调用"TouchCalibrate"后编译出错或者调用不成功的话可以自己收到加载此函数如: typedef BOOL (WINAPI *_TouchCalibrate)(); HINSTANCE hinstance = LoadLibrary(_T("coredll.dll")); if (hinstance == NULL) { return; } //定义一个函数指针 _TouchCalibrate TouchCalibrate = NULL; //获取函数入口地址 TouchCalibrate = (_TouchCalibrate)GetProcAddress(hinstance,L"TouchCalibrate"); if (TouchCalibrate == NULL) { return; } TouchCalibrate (); FreeLibrary(hinstance ); 2、修改校准界面 $_WINCEROOTPUBLICCOMMONOAKDRIVERSCALIBRUI文件下有calibrui.cpp和calibrui.rc CalibrUi.cpp主要函数的功能我介绍下。要改它,肯定要先清楚它是做什么的。 TouchCalibrateUI_Initialize做初始化。保存两个全局变量。 TouchCalibrateUI_DrawMainScreen打印校准操作说明信息。 TouchCalibrateUI_HandleUserInputMessage捕捉屏幕事件并做相应操作。 TouchCalibrateUI_DrawConfirmationScreen打印新校准测定之后,提示是否保存。 TouchCalibrateUI_WaitForConfirmation等待用户决定并打印相关信息。 这面五个函数是按被调用启动的先顺序列出来的。 TouchCalibrateUI_DrawMainScreen和TouchCalibrateUI_DrawConfirmationScreen都调用了TouchCalibrateDrawScreenText。 TouchCalibrateDrawScreenText是用来把字符串打到屏幕上。我主要在这个函数中做了相应的更改。如改屏幕背景色,改打印出来的字的颜色等。 好了现在知道了上面的函数的作用,那要修改界面就好办了。 如:在上面加载位图 static void TouchCalibrateDrawScreenText( HDC hdc,int cLines,UINT IdStringBase ) { int VertSpacing = 0; TCHAR buf[C_CALIBRATION_MSG_BUF_CHARS]; int cChars; int xText,yText; SIZE Size; int i; // Clear the screen. Rectangle(hdc,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)); //-----加载位图-----lanyzh-Str----------------------------------------- HDC hdcImage = CreateCompatibleDC(hdc); ? ?? ?? ?HBITMAP hbm = NULL; ? ?? ?hbm = SHLoadDIBitmap(L"Nand flashAPPUIBT_Background.bmp"); ?? ?if (hbm != NULL && hdcImage != NULL) ? ?? ?{ ? ?? ? ? ?BITMAP bm; ? ?? ? ? ?SelectObject(hdcImage,hbm); ? ?? ? ? ?GetObject(hbm,sizeof(bm),&bm); ? ?? ? ? ?StretchBlt(hdc,GetSystemMetrics(SM_CYSCREEN),hdcImage,bm.bmWidth,bm.bmHeight,SRCCOPY); ? ?? ?? ? ? ?DeleteObject(hbm); ? ?? ? ? ?hbm = NULL; ? ?? ? ? ?DeleteObject(hdcImage); ?? ?? ? ? ?hdcImage = NULL; ? ?? ?? ?} ? ? //-------------------End----------------------------------------- // Display each line of instructions. for ( i = 0; i < cLines; i++ ) { if ( LoadString(s_hinst,IdStringBase+i,buf,C_CALIBRATION_MSG_BUF_CHARS) == 0 ) { continue; } cChars = _tcslen(buf); // Figure text position. TextSize(hdc,cChars,&Size); xText = GetSystemMetrics(SM_CXSCREEN)/2 - Size.cx/2; // Center horizontally // If first pass through,figure vertical spacing,// else just skip to the next line. if ( VertSpacing == 0 ) { VertSpacing = Size.cy + Size.cy/10; yText = VertSpacing; // Skip a line at the top } else { yText += VertSpacing; } // Draw this line. ExtTextOut( hdc,xText,yText,NULL,// rectangle options buf,NULL); } return; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |