📄 win_loclocate.c~
字号:
{
CheckTidCount( );
Pthread_create( &tid_Processing[tidProcessing],&attr,MutiReportLoc,NULL);
}
skin_enable_item (&skin_loclocate,SIID_OK,FALSE);
skin_show_item (&skin_loclocate,SIID_OK,FALSE);
skin_enable_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_show_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_START,FALSE);
skin_show_item (&skin_loclocate,SIID_START,FALSE);
skin_enable_item (&skin_loclocate,SIID_END,TRUE);
skin_show_item (&skin_loclocate,SIID_END,TRUE);
break;
case SIID_END://连续定位
startLocFlag = LOCSTOP;
printf("set startLocFlag == LOCSTOP)\n");
Pthread_cond_signal(&newLoc_cond);
skin_enable_item (&skin_loclocate,SIID_OK,FALSE);
skin_show_item (&skin_loclocate,SIID_OK,FALSE);
skin_enable_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_show_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_START,TRUE);
skin_show_item (&skin_loclocate,SIID_START,TRUE);
skin_enable_item (&skin_loclocate,SIID_END,FALSE);
skin_show_item (&skin_loclocate,SIID_END,FALSE);
break;
case SIID_JINJILOCATE://紧急定位
ObtainSendLocArg( EMERGENCY );
CheckTidCount( );
Pthread_create(&tid_Processing[tidProcessing],&attr,SendDataGram,NULL);
locArg->locType = EMERGENCY;
CheckTidCount( );
Pthread_create( &tid_Processing[tidProcessing],&attr,AcceptLoc,(void *)locArg);
break;
case SIID_CANCEL:
ClickCancel_loclocate ();
break;
case SIID_RETURN://return
win_locOpen = WIN_LOCCLOSE;
win_locate ( hWndMain);
CloseTheWindow_loclocate ();
break;
}
}
return 1;
}
static void InitWindow_loclocate ()
{
//初始化时,"返回,取消,开始,确定" 都不可见
skin_enable_item (&skin_loclocate,SIID_RETURN,TRUE);
skin_show_item (&skin_loclocate,SIID_RETURN,TRUE);
skin_enable_item (&skin_loclocate,SIID_CANCEL,FALSE);
skin_show_item (&skin_loclocate,SIID_CANCEL,FALSE);
skin_enable_item (&skin_loclocate,SIID_OK,FALSE);
skin_show_item (&skin_loclocate,SIID_OK,FALSE);
switch(flagloclocate){
case 1:
skin_enable_item (&skin_loclocate,SIID_JINJILOCATE,FALSE);
skin_show_item (&skin_loclocate,SIID_JINJILOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_END,FALSE);
skin_show_item (&skin_loclocate,SIID_END,FALSE);
skin_enable_item (&skin_loclocate,SIID_START,FALSE);
skin_show_item (&skin_loclocate,SIID_START,FALSE);
skin_enable_item (&skin_loclocate,SIID_LOCATE,TRUE);
skin_show_item (&skin_loclocate,SIID_LOCATE,TRUE);
break;
case 2:
if (startLocFlag == LOCSTOP){
printf("Init startLocFlag == LOCSTOP)\n");
skin_enable_item (&skin_loclocate,SIID_JINJILOCATE,FALSE);
skin_show_item (&skin_loclocate,SIID_JINJILOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_END,FALSE);
skin_show_item (&skin_loclocate,SIID_END,FALSE);
skin_enable_item (&skin_loclocate,SIID_LOCATE,FALSE);
skin_show_item (&skin_loclocate,SIID_LOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_START,TRUE);
skin_show_item (&skin_loclocate,SIID_START,TRUE);
}
else if(startLocFlag == LOCSTART)
{
printf("Init startLocFlag == LOCSTART)\n");
skin_enable_item (&skin_loclocate,SIID_OK,FALSE);
skin_show_item (&skin_loclocate,SIID_OK,FALSE);
skin_enable_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_show_item (&skin_loclocate, SIID_LOCATE,FALSE);
skin_enable_item (&skin_loclocate,SIID_START,FALSE);
skin_show_item (&skin_loclocate,SIID_START,FALSE);
skin_enable_item (&skin_loclocate,SIID_END,TRUE);
skin_show_item (&skin_loclocate,SIID_END,TRUE);
}
break;
case 3:
skin_enable_item (&skin_loclocate,SIID_JINJILOCATE,TRUE);
skin_show_item (&skin_loclocate,SIID_JINJILOCATE,TRUE);
skin_enable_item (&skin_loclocate,SIID_START,FALSE);
skin_show_item (&skin_loclocate,SIID_START,FALSE);
skin_enable_item (&skin_loclocate,SIID_END,FALSE);
skin_show_item (&skin_loclocate,SIID_END,FALSE);
skin_enable_item (&skin_loclocate,SIID_LOCATE,FALSE);
skin_show_item (&skin_loclocate,SIID_LOCATE,FALSE);
break;
}
}
static int msg_event_cb_loclocate (HWND hwnd, int message, WPARAM wparam, LPARAM lparam, int* result)
{
HDC hdc;
HDC hdc1;
IVITEMINFO ivii_child;
int j,i,k;
char buff[40];
switch (message) {
case MSG_CREATE:
win_locOpen = WIN_LOCOPEN;
//状态栏图片加载
switch (flagloclocate)
{
case 1:
LoadBitmap (HDC_SCREEN, &bmp_loclocate, "Pictures/a_location_1.PNG");
break;
case 2:
LoadBitmap (HDC_SCREEN, &bmp_loclocate, "Pictures/a_location_2.PNG");
break;
case 3:
LoadBitmap (HDC_SCREEN, &bmp_loclocate, "Pictures/a_location_3.PNG");
break;
}
//按键区初始化
InitWindow_loclocate();
//菜单
hIV_menu_loclocate =CreateMenuWindow(hwnd ,90,7, 1185);
//HWND CreateMenuWindow( hwnd , int width, int rowcount, int NO);
for (i = 0; i < TABLESIZE(icon_labels_loclocate); i++) {
memset (&ivii_child, 0, sizeof(IVITEMINFO));
ivii_child.bmp = NULL;
ivii_child.nItem = i;
ivii_child.label = icon_labels_loclocate[i] ;
ivii_child.addData = i;
SendMessage (hIV_menu_loclocate, IVM_ADDITEM, 0, (LPARAM)&ivii_child);
}
W_hwndedit_loclocate = CreateWindow( CTRL_SLEDIT, //纬度
"",
//WS_VISIBLE | ES_TIP| WS_BORDER ,// | ES_AUTOWRAP,
WS_VISIBLE | WS_CHILD | WS_BORDER,// |ES_CENTER,//|ES_READONLY|ES_RIGHT,// | ES_AUTOWRAP,
ID_W_EDIT,
35, 30,120 , 20, hwnd, 0);
SendMessage (W_hwndedit_loclocate, EM_LIMITTEXT, 18,0L);//set length of inputing text
J_hwndedit_loclocate = CreateWindow( CTRL_SLEDIT, //经度
"",
//WS_VISIBLE | ES_TIP| WS_BORDER ,// | ES_AUTOWRAP,
WS_VISIBLE | WS_CHILD | WS_BORDER ,//|ES_CENTER,//|ES_READONLY|ES_RIGHT,// | ES_AUTOWRAP,
ID_W_EDIT,
35, 60,120 , 20, hwnd, 0);
SendMessage (J_hwndedit_loclocate, EM_LIMITTEXT, 18,0L);//set length of inputing text
locatehight_loclocate = CreateWindow( CTRL_SLEDIT, //高程
"",
//WS_VISIBLE | ES_TIP| WS_BORDER ,// | ES_AUTOWRAP,
WS_VISIBLE | WS_CHILD | WS_BORDER ,//|ES_READONLY ,// | ES_AUTOWRAP,
ID_W_EDIT,
35, 90,85 , 25, hwnd, 0);
locateErr_loclocate = CreateWindow( CTRL_SLEDIT, //高程误差
"",
//WS_VISIBLE | ES_TIP| WS_BORDER ,// | ES_AUTOWRAP,
WS_VISIBLE | WS_CHILD | WS_BORDER ,//|ES_READONLY ,// | ES_AUTOWRAP,
449,
120, 90,35 , 25, hwnd, 0);
locatetime_loclocate = CreateWindow( CTRL_SLEDIT, //时间
"",
//WS_VISIBLE | ES_TIP| WS_BORDER ,// | ES_AUTOWRAP,
WS_VISIBLE | WS_CHILD | WS_BORDER ,//|ES_READONLY ,// | ES_AUTOWRAP,
ID_W_EDIT,
35, 120,120 , 20, hwnd, 0);
//坐标系
gal_pixel pixel = RGB2Pixel (HDC_SCREEN, 0xFF, 0xFF, 0xFF);//set the color
hWndCombox_Z = CreateWindow( CTRL_COMBOBOX,
"", WS_CHILD | WS_VISIBLE | CBS_EDITNOBORDER|//WS_BORDER|//
CBS_READONLY|CBS_SPINARROW_LEFTRIGHT |CBS_SORT|CBS_SPINLIST,
2343, RJ_X, 144 , 90, 25, hwnd, 0);
SetWindowBkColor (hWndCombox_Z, pixel);
for(i=0;i<5;i++)
{
SendMessage (hWndCombox_Z, CB_ADDSTRING, 0,
(LPARAM)coordiLabels_loclocate[i]);//(LPARAM)
}
SendMessage (hWndCombox_Z, CB_SETCURSEL, GetCurrCoordinate (), 0 );//默认为系统设置的
//高程方式
hWndCombox_G = CreateWindow( CTRL_COMBOBOX,
"", WS_CHILD | WS_VISIBLE | CBS_EDITNOBORDER|//WS_BORDER|//
CBS_READONLY|CBS_SPINARROW_LEFTRIGHT |CBS_SORT|CBS_SPINLIST,
2343, 90, 144, 50, 25, hwnd, 0);
SetWindowBkColor (hWndCombox_G, pixel);
for(i=0;i<2;i++)
{
SendMessage (hWndCombox_G, CB_ADDSTRING, 0,
(LPARAM)labels_sysSetCoordinate[i]);//(LPARAM)
}
SendMessage (hWndCombox_G, CB_SETCURSEL, 0, 0 );//默认大地高
if( newLoc.usable == TRUE)
{
printf("Firstly create window, Flush the window!\n");
ShowByDaDi (J_hwndedit_loclocate ,W_hwndedit_loclocate,
newLoc.dwxx.longitude ,
newLoc.dwxx.latitude) ;//显示"经度""纬度"
ShowHighByDaDiGao (locatehight_loclocate,locateErr_loclocate ,
newLoc.dwxx.height,
newLoc.dwxx.abnormalHeigtht,
newLoc.dwxx.normalSign,
newLoc.dwxx.abnormalSign);//显示"高程"""高程误差"
sprintf(buff ,"%4d-%2d-%2d %2d:%2d:%2d",
newLoc.dwxx.year,
newLoc.dwxx.mon,
newLoc.dwxx.day,
newLoc.dwxx.hour,
newLoc.dwxx.minute,
newLoc.dwxx.second);
SetWindowText (locatetime_loclocate, buff);//显示时间
}
break;
case MSG_PAINT :
hdc=BeginPaint (hwnd);
SetBkMode (hdc, BM_TRANSPARENT);
FillBoxWithBitmap (hdc, ZTL_PIC_X,ZTL_PIC_Y, ZTL_PIC_W,ZTL_PIC_H, &bmp_loclocate);
switch (flagloclocate)
{
case 1:
TextOut (hdc, WZ_ZTL_X4, WZ_ZTL_Y, "单次定位" );
break;
case 2:
TextOut (hdc, WZ_ZTL_X4, WZ_ZTL_Y, "连续定位" );
break;
case 3:
TextOut (hdc, WZ_ZTL_X4, WZ_ZTL_Y, "紧急定位" );
break;
}
TextOut (hdc,3, 30, "纬度");
TextOut (hdc,3, 60, "经度");
TextOut (hdc,3, 93, "高程");
TextOut (hdc,3, 120,"时间");
EndPaint (hwnd,hdc);
break;
}
return 1;
}
void win_loclocate(HWND hwndmain,int flag_loclocate){
MSG msg;
flagloclocate=flag_loclocate;
//flagloclocate=1 单次定位,//flagloclocate=2 连续定位,// flagloclocate=3 紧急定位
LoadSkinBmps( &skin_loclocate, TRUE ,bmp_name_loclocate ,(sizeof (bmp_name_loclocate))/sizeof(char *) );
if (skin_loclocate.bmps == NULL) {
printf ("Could not load skin bitmaps!\n");
}
if ( !skin_init (&skin_loclocate, main_event_cb_loclocate, msg_event_cb_loclocate) ){
// 初始化皮肤
printf ("skin init fail!%d\n\n");
}
else{
hWndMainloclocate = create_skin_control (&skin_loclocate, hwndmain,143, DEF_X_, DEF_Y_,
DEF_WIDTH, DEF_HEIGHT);
currShowWindowHwnd = hWndMainloclocate;
}
}
#ifndef _LITE_VERSION
#include <minigui/dti.c>
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -