Win32 API 窗口版本转换度分秒为小数
经纬度的度分秒和小数之间转换是做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 窗口版本转换度分秒为小数相关推荐
- 重温WIN32 API ------ 窗口上绘制位图文件
1 基本思路 做界面仿真时,经常需要在窗口上贴图,随着图片数量的增多,通过资源文件中添加位图的方式会变得越来越不可控.所以本着"资源与程序分离"的原则,还是使用外部位图文件更加清晰 ...
- java 将小数度数转换为度分秒格式
/*** 将经纬度转换为度分秒格式* @param du 度数 116.418847* @return 116°25'7.85"*/public static Integer[] chang ...
- 经纬度中的度分秒转化为小数形式
问: 我将经纬度以114°23'57"和30°32'39"的形式为char型,分别保存在sql2005数据库的两列中,怎样将其转化为小数的形式保存为double型. 答: 用str ...
- c语言根据窗口姓名获取句柄,win32 API窗口句柄的获得
可用的win32 api函数: 1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND ...
- 重温WIN32 API ------ 最简单的Windows窗口封装类
1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++.C+ ...
- C++ 纯WIN32 API编程 悦读器实战示例
/* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...
- 小程序火星坐标系 (GCJ-02) 转百度坐标系 (BD-09)和经纬度转度分秒格式
酸狗先带大家看看效果: 地图咋实现的就不写了小程序的map的API写的很清楚,主要看下转百度经纬度,想是uniapp搭建的,为啥用uniapp,以为不想用小程序开发工具~ 获取下经纬度然后把经纬度存起 ...
- Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
大龙的博客 C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理 Don't Use the Win32 API PostThreadMessage() to Post Me ...
- 揭示Win32 API拦截细节/API hooking revealed (1)
原文出处:http://www.codeproject.com/system/hooksys.asp 简要介绍 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性的课题, ...
最新文章
- AD ---- 活动目录的日常管理操作
- java读取pi_(树莓派csi相机)使用Java从raspivid-stdout读取h...
- 在linux下,如何在C语言中使用正则表达式
- 关于base64编码的原理及实现
- 【Vue】—项目的目录结构介绍
- 计算机放样在钢结构应用,计算机放样应用于钢结构工程
- 西岛住宿软件测试,三亚西岛怎么玩,吃住玩全攻略带走
- android音标,安卓系统如何正确显示音标
- 计算机c盘无法扩展,电脑c盘怎么扩大_C盘空间不足的扩大步骤-win7之家
- R语言学习-问题解决-Error in output$nodeID : $ operator is invalid for atomic vectors
- outlook 2019 mac中如何设置邮件签名
- pl sql迁移oracle,Oracle数据库安装及使用PLSQL数据迁移
- 1.2.5 层次模型
- csol霸主永恒python_昔日霸主沦为下水道?黑客编程告诉你谁是剑网3新赛季最惨门派!...
- //多线程龟兔赛跑问题,乌龟和兔子比赛跑200米的距离,//名叫兔子的线程每执行一次兔子就向前跑5米,每跑50米休息10毫秒,//名叫乌龟的线程每执行一次乌龟就向前跑1米,乌龟会一直跑不休息/
- 【Qt】关于QLabel显示图片二三事
- 保险项目核保的规则和所负责业务的逻辑【杭州多测师】【杭州多测师_王sir】...
- USUS微软补丁服务器 使用
- numba : python complier for cuda
- cmd什么指令可以清除后台进程