经纬度的度分秒和小数之间转换是做GIS时常用的;下面实现一个Win32 API 版本度分秒转换为小数;

与此网站对比;

http://www.gzhatu.com/du2dfm.html

使用VC++ 6 构建;

/*-------------------------------------------------
bobo, 2020
-------------------------------------------------*/#include <windows.h>
#include <windowsx.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
float lltodecimal(int, int, int);
HINSTANCE appInstance;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR  szCmdLine, int iCmdShow)
{static TCHAR szAppName[] = TEXT("lonlat");HWND         hwnd;MSG          msg;WNDCLASS     wndclass;wndclass.style = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc = WndProc;wndclass.cbClsExtra = 0;wndclass.cbWndExtra = 0;wndclass.hInstance = hInstance;wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName = NULL;wndclass.lpszClassName = szAppName;appInstance = hInstance;if (!RegisterClass(&wndclass)){MessageBox(NULL, TEXT("Program requires Windows NT!"),szAppName, MB_ICONERROR);return 0;}hwnd = CreateWindow(szAppName, TEXT("度分秒转换小数点"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);ShowWindow(hwnd, iCmdShow);UpdateWindow(hwnd);while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{HDC         hdc;PAINTSTRUCT ps ;char buf1[30],buf2[30],buf3[30];int v1,v2,v3,v4;HWND hButton;HWND hEdit1,hEdit2,hEdit3,hEdit4;LPTSTR result[128];float llnumber = 0;switch (message){case WM_CREATE:hEdit1 = (HWND)CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 10,10,100,50,hwnd,(HMENU)521,appInstance,NULL);hEdit2 = (HWND)CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 120,10,100,50,hwnd,(HMENU)522,appInstance,NULL);hEdit3 = (HWND)CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 230,10,100,50,hwnd,(HMENU)523,appInstance,NULL);hEdit4 = (HWND)CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 340,10,150,50,hwnd,(HMENU)524,appInstance,NULL);hButton = (HWND)CreateWindow(TEXT("Button"),TEXT("DO IT !!!"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,300, 100, 160, 65,hwnd,(HMENU)520,  //设置按钮id,原本是设置菜单的 所以需要HMENUappInstance,NULL);return 0;case WM_SIZE:return 0;case WM_RBUTTONDOWN:return 0;case WM_LBUTTONDOWN:        return 0;case WM_PAINT:hdc = BeginPaint(hwnd, &ps);EndPaint(hwnd, &ps);return 0;case WM_COMMAND:       if (LOWORD(wParam) == 520 && HIWORD(wParam) == BN_CLICKED)//按钮{GetWindowText(GetDlgItem(hwnd,521), buf1, 30);//根据父窗口句柄以及控件id, 获取控件句柄,然后用GetWindowText获取控件内的文本v1=atoi(buf1); //转换为整型GetWindowText(GetDlgItem(hwnd,522), buf2, 30);v2=atoi(buf2);GetWindowText(GetDlgItem(hwnd,523), buf3, 30);v3=atoi(buf3);//MessageBox(hwnd,result, TEXT("提示"), MB_OK);//SetWindowText(hEdit2,result); //错误,无法设置hEdit2;llnumber=lltodecimal(v1,v2,v3);sprintf(result,"%.7lf",llnumber);   //格式化为float,保留7位小数SetWindowText(GetDlgItem(hwnd,524),result);}break;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, message, wParam, lParam);
}float lltodecimal(int d1, int f1, int m1)
{float dc1=(float)d1 + (float)f1 / 60 + (float)m1 / 3600;return dc1;
}

实现了基本功能,问题还不少;并且只能输入整数;

Win32 API 窗口版本转换度分秒为小数相关推荐

  1. 重温WIN32 API ------ 窗口上绘制位图文件

    1 基本思路 做界面仿真时,经常需要在窗口上贴图,随着图片数量的增多,通过资源文件中添加位图的方式会变得越来越不可控.所以本着"资源与程序分离"的原则,还是使用外部位图文件更加清晰 ...

  2. java 将小数度数转换为度分秒格式

    /*** 将经纬度转换为度分秒格式* @param du 度数 116.418847* @return 116°25'7.85"*/public static Integer[] chang ...

  3. 经纬度中的度分秒转化为小数形式

    问: 我将经纬度以114°23'57"和30°32'39"的形式为char型,分别保存在sql2005数据库的两列中,怎样将其转化为小数的形式保存为double型. 答: 用str ...

  4. c语言根据窗口姓名获取句柄,win32 API窗口句柄的获得

    可用的win32 api函数: 1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND ...

  5. 重温WIN32 API ------ 最简单的Windows窗口封装类

    1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++.C+ ...

  6. C++ 纯WIN32 API编程 悦读器实战示例

    /* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...

  7. 小程序火星坐标系 (GCJ-02) 转百度坐标系 (BD-09)和经纬度转度分秒格式

    酸狗先带大家看看效果: 地图咋实现的就不写了小程序的map的API写的很清楚,主要看下转百度经纬度,想是uniapp搭建的,为啥用uniapp,以为不想用小程序开发工具~ 获取下经纬度然后把经纬度存起 ...

  8. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)

    大龙的博客 C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理 Don't Use the Win32 API PostThreadMessage() to Post Me ...

  9. 揭示Win32 API拦截细节/API hooking revealed (1)

    原文出处:http://www.codeproject.com/system/hooksys.asp 简要介绍 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性的课题, ...

最新文章

  1. AD ---- 活动目录的日常管理操作
  2. java读取pi_(树莓派csi相机)使用Java从raspivid-stdout读取h...
  3. 在linux下,如何在C语言中使用正则表达式
  4. 关于base64编码的原理及实现
  5. 【Vue】—项目的目录结构介绍
  6. 计算机放样在钢结构应用,计算机放样应用于钢结构工程
  7. 西岛住宿软件测试,三亚西岛怎么玩,吃住玩全攻略带走
  8. android音标,安卓系统如何正确显示音标
  9. 计算机c盘无法扩展,电脑c盘怎么扩大_C盘空间不足的扩大步骤-win7之家
  10. R语言学习-问题解决-Error in output$nodeID : $ operator is invalid for atomic vectors
  11. outlook 2019 mac中如何设置邮件签名
  12. pl sql迁移oracle,Oracle数据库安装及使用PLSQL数据迁移
  13. 1.2.5 层次模型
  14. csol霸主永恒python_昔日霸主沦为下水道?黑客编程告诉你谁是剑网3新赛季最惨门派!...
  15. //多线程龟兔赛跑问题,乌龟和兔子比赛跑200米的距离,//名叫兔子的线程每执行一次兔子就向前跑5米,每跑50米休息10毫秒,//名叫乌龟的线程每执行一次乌龟就向前跑1米,乌龟会一直跑不休息/
  16. 【Qt】关于QLabel显示图片二三事
  17. 保险项目核保的规则和所负责业务的逻辑【杭州多测师】【杭州多测师_王sir】...
  18. USUS微软补丁服务器 使用
  19. numba : python complier for cuda
  20. cmd什么指令可以清除后台进程

热门文章

  1. Nacos注册中心——启动相关的配置
  2. JDK源码解析-Collection.iterator方法
  3. matlab滤波仿真
  4. ubuntu16.04分区
  5. CTFshow php特性 web115
  6. CTFshow 命令执行 web41
  7. CTFshow 命令执行 web35
  8. YTU 1495 蛇行矩阵 YTU 1607 字符棱形YTU 1959 图案打印YTU 2016 打印金字塔
  9. G - Bad Hair Day (单调栈)
  10. java中string类_Java中String类浅谈