最近做一个门店查询的内容展示,考虑到用户直观感受,决定用百度地图API处理之,于是入了这个大坑 因为这是第一次接触百度地图API,所以开始之前去研究百度的API文档和示例demo, 在demo中找到了带检索功能的信息窗口和为多个点添加文本信息窗口的示例...searchInfoWindow3.open(new BMap.Point(116.328852,40.057031)); } 二、为多个点添加文本信息窗口...您的密钥"> 给多个点添加信息窗口...height: 80, // 信息窗口高度 title : "信息窗口" , // 信息窗口标题...head> 百度地图API显示多个标注点带百度样式信息检索窗口的代码
TypeNamingConfig { ShowTypeNames = false }, tableConfig: new TableConfig { ShowTableHeaders = false }); 有多个输出选项
窗口处理指针:为指向窗体的的过程函数,为指针,使用 WndProc 处理应用程序在发生事件时从 Windows 接收的消息,以下将会讲解 WndProc cbClsExtra 窗口类结构后的附加字节数...例如,如果用户在应用程序中选择"确定"按钮,Windows 会向您发送消息,您可以在WndProc函数内编写代码,执行任何适当的操作。 这称为处理事件。 您只处理与应用程序相关的事件。...当必须更新其显示WM_PAINT窗口的一部分时,应用程序将接收消息。 当用户在窗口前面移动窗口,然后再次将其移开时,可能会发生此事件。 您的应用程序不知道这些事件何时发生。...:指向PAINTSTRUCT结构的指针 —————————————————————————————————— PostQuitMessage 向系统指示线程已请求终止(退出)。...—————————————————————————————————— DefWindowProc 调用默认窗口过程以为应用程序未处理的任何窗口消息提供默认处理。此功能确保处理所有消息。
静态链接库和动态链接库的异同 静态链接库是一个或多个obj文件的打包,所以有人干脆把obj文件生成lib文件的过程称为Archive,即合并在一起。...函数的可执行代码位于.dll文件中,该dll包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。dll还有助于共享数据和资源。多个应用程序可同时访问内存中单个dll副本的内容。...模拟两个线程实现火车站两个窗口售票程序,窗口售票时间为1秒,两个窗口不能同时售票。...#include #include using namespace std; DWORD WINAPI Fun1Proc(LPVOID lpParameter)...;//thread data DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data int index = 0; int tickets =
一、原理 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。...当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。...钩子子程是一个应用程序定义的回调函数(CALLBACKFunction),不能定义成某个类的成员函数,只能定义为普通的C函数。...; return 1; } LRESULT WINAPI BoardPro(int nCode, WPARAM wParam, LPARAM lParam) { if(wParam == 'C')...HHOOK g_hMouse;HHOOK g_hBoard;bool m_bFlag = false;LRESULT WINAPI MousePro(int nCode, WPARAM wParam
二者是16位操作系统向32位操作系统过渡的产物,如今已经没有区别了。 虽然如今已经不分“长短”了,但是依然会出现一个兼容问题,特别是在程序逻辑中存在指针和整形的转化关系的时候。...这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。...窗口 存在 UI 控件的时候,控件窗口被认为是应用程序窗口的子窗口, 应用程序窗口被认为是控件窗口的父窗口。 通过父窗口的坐标系可以定位子窗口的位置,并且子窗口的样式等一些属性会受到父窗口的影响。...nCmdShow 该参数是一个整数,代表应用程序主窗口的显示状态,是最小化、最大化还是正常显示。 WINAPI 是一种调用约定。...空的 WinMain 函数: INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine,
一个消息一般都与某个窗口相关联,比如鼠标移动到某个窗口中按下鼠标左键,该窗口就会收到一个“WM_LBUTTONDOWND”的消息,而应用程序就是利用消息中的hwnd值来 确定该消息到底是属于众多窗口中的哪一个窗口的...一个应用程序可以运行多个实例,每运行一个实例,系统都会给该实例分配一个句柄值,并通过 hInstance 参数传递给 WinMain 函数。...: 该窗口类的所有窗口实例都共享一个窗口类DC CS_DBLCLKS: 允许向窗口发送双击鼠标键的消息 CS_GLOBALCLASS: 当调用CreateWindow 或 CreateWindowEx...CS_SAVEBITS: 以位图形式保存被该窗口遮挡的屏幕部分,这样当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息。...lpszName h handle Windows对象句柄 hWnd lpfn callback 指向CALLBACK函数的远指针 前缀_符号类型: 前缀_符号类型实例&范围 IDR_ 不同类型的多个资源共享标识
前言: 本篇博客带大家介绍一下winAPI函数,为接下来给大家带来的贪吃蛇小游戏做铺垫 正文: winAPI介绍 在 Windows 操作系统的生态中,WinAPI(Windows Application...Programming Interface,Windows 应用程序编程接口)是连接上层应用与系统内核的核心桥梁。...对于普通用户而言,WinAPI 是 “隐形” 的 —— 我们日常使用的浏览器、办公软件、桌面工具,其窗口显示、鼠标交互、文件保存等核心功能,本质上都是通过调用 WinAPI 与操作系统底层进行通信实现的...无论是开发简单的桌面窗口程序,还是复杂的系统工具、硬件交互软件,理解 WinAPI 的核心逻辑,都是掌握 Windows 系统编程的基础。...应用程序编程接口)的总入口,包含了 Windows 系统编程所需的绝大多数声明、宏定义和数据结构。
Win32 API Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启窗口...win32API不同于C语言基础语法,大多都是封装好的函数,初次接触这样的开发可能会有些头晕,但这是向制作更复杂的项目的必经之路,也是学习更高级的语言的必然过程,需要尝试去接受。...=30"); //设置cmd窗口名称 system("title 贪吃蛇"); getchar(); //让程序不要直接结束,才能看到窗口名称的改变 return 0; } 这样就能在游戏开始前固定窗口大小与名称了...BOOL WINAPI GetConsoleCursorInfo( HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo...BOOL WINAPI SetConsoleCursorPosition( HANDLE hConsoleOutput, COORD pos ); 使用示例: COORD pos = { 10, 5
可以是监视窗口过程.可以是监视消息队列. _In_ HOOKPROC lpfn, 根据钩子类型.设置不同的回调函数....我们需要在我们的程序中 添加 .h头文件. 使用宏指令包含.lib文件. 2.动态调用. 动态调用涉及到两个API....其实SetWindowsHookEx就是在应用程序执行过程中.替我们加了一层. 而我们提供回调地址那么当操作来了就会通知我们回调.这个时候我们回调函数就可以做我们的事情了....原理: 原理就是我们的窗口程序. 直接使用DLL里面的SetWindowsHookEx设置了一个回调....而这个API是给全局所有应用程序都设置了这个回调.那么如果有32位程序会触发回调.那么我们的DLL就会注入到里面去了.
鼠标这种硬件产生的信号肯定是操作系统处理,操作系统转发给对应的进程 在windows中,也有鼠标按下,moveover 这类的消息 在windows中,一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向...例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序的消息队列,然后应用程序再从消息队列中取出消息并进行相应的响应 Windows操作系统也会给应用程序“发送消息”...windows 程序 最基本的窗口 //一个简单的Win32应用程序 //通过这个简单的实例讲解Windows消息是如何传递的 #include //声明窗口过程函数 LRESULT..."); //应用程序主函数 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance...事件循环的主要机制就是任务队列机制: 一个事件循环有一个或者多个任务队列(task queues)。
在开始之前,我们还是准备一个 Windows 窗口程序,这个程序足够简单,不借助 MFC 或者 QT 这样的框架,仅通过 Windows API 创建一个应用程序窗口。...break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI...内核态的系统调用不能被应用程序直接调用,只能通过 user32.dll / gdi32.dll 等库调用。...这段代码主要通过 SERVER_START_REQ / SERVER_END_REQ 机制向 Wine server 发送 create_window 请求: SERVER_START_REQ(...X11原生函数 通过这种设计,Windows应用程序无需修改即可在Linux环境下正常创建和显示窗口,Wine 负责完成所有的API转换和平台适配工作。
窗口句柄(HWND) , 4.应用程序实列句柄(HINSTANCE). } } 2、Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序的入口函数: ?...窗口应用程序入口: Int WINAPI WinMain( HINSTANCE hinstance ; // 应用程序实列句柄 HINSTANCE hPrevInstance ; // 基本都设置为...: 大致来说,如果要创建一个完整的窗口需要经过下面四个操作步骤:{ (1)、设计一个窗口类; (2)、 注册窗口类 ; (3)、创建窗口; (4)、显示及更新窗口。 ...wParam, // first message parameter 9 LPARAM lParam // second message parameter); 10 ); 11 int WINAPI...200,400,"我是胡萝卜头,呼叫北极站",strlen("我是胡萝卜头,呼叫北极站")); 67 ReleaseDC(hwnd,hdc); /*函数释放设备上下文环境(DC)供其他应用程序使用
钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。...之后,在相应的头文件中添加宏定义和待导出函数的声明: #define DllExport __declspec(dllexport)……DllExport void WINAPI InstallLaunchEv...LPARAM lParam);void SaveLog(char* c); 最后,完成以上提到的这几个函数的具体编码实现: CLaunchDLLApp theApp;……DllExport void WINAPI...钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。...之后,在相应的头文件中添加宏定义和待导出函数的声明: #define DllExport __declspec(dllexport)……DllExport void WINAPI InstallLaunchEv
代码如下: #include #include #include long WINAPI WndProc ( HWND hWnd, UINT...InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance, int nCmdShow); HWND hWndMain; int WINAPI...{ TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; } long WINAPI...//绘制饼形 EndPaint(hWnd, &PtStr); //结束绘图 return 0; case WM_DESTROY: //结束应用程序...hWnd) return FALSE; hWndMain = hWnd; ShowWindow(hWnd, nCmdShow); //显示窗口 UpdateWindow(hWnd);
GetMessage函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息,接收一定范围的消息值,不接收属于其他线程或应用程序的消息。...例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时。若想获得更多的错误信息,请调用GetLastError函数 补充: 应用程序通常用返回值来确定是否终止主消息循环并退出程序。...如果应用程序为其它用途而处理虚拟键消息,不应调用TranslateMessage函数。...例如,如果TranslateAccelerator函数返回一个非零值,则应用程序将不调用TranslateMessage函数。...若只处理某些消息,指定一个或多个下列值: 值 意义 PM_QS_INPUT Windows NT 5.0和Windows 98:处理鼠标和键盘消息。
region 忽略掉 // //TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的, // 则从此 DLL 导出的任何调入 // MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到...(); #pragma endregion return TRUE; } // 程序出口 int CTest_DllmfcApp::ExitInstance() { // TODO: 在此添加专用代码和...// 附加消息信息 (LPARAM)(((PMOUSEHOOKSTRUCT)lParam)->hwnd) // 附加消息信息,此处为鼠标所在窗口的窗口句柄 ); /* typedef...// 卸载 dll FreeLibrary(hInst); } } #pragma endregion 因为这里没法使用代码折叠,所以不太直观,我放一张折叠后的图: 在 .def 文件中添加导出函数...; // 全局变量,同 HMODULE void CTest_MFCDlg::HOOK() { // TODO: 在此添加控件通知处理程序代码 // 加载 dll(需要根据自己 dll 的实际路径而定
系统DPI感知(System aware)系统DPI感知是指应用程序根据整个系统的DPI设置来调整其界面元素的大小和布局。这种模式下,当用户更改系统DPI设置时,所有应用程序的界面都会相应地调整。...这种模式下,当用户在不同DPI设置的显示器之间移动应用程序窗口时,应用程序的界面会自动适应每个显示器的DPI设置。...QT应用qt应用程序为了默认支持高清屏,设置的DPI感知类型为Per Monitor,以下为5.15.2源码时机为程序创建第一个窗口之前,所以需要修改DPI感知类型需要在这个时机之前,否则会有warning...break; } class ScopedPerMonitorAware { typedef DPI_AWARENESS_CONTEXT(WINAPI...shcoreModule) { break; } typedef HRESULT(WINAPI * GetDpiForMonitor)(HMONITOR
服务器端: Step 1: 新建>项目>C++>MFC应用程序 Step 2: 在程序文件.h中引入socket库: #include #pragma comment...NULL; m_ListenSock = INVALID_SOCKET; bIsServer = -1; bShutDown = FALSE; } Step 15: 在程序主窗口退出程序的消息函数中释放套接字...,将执行上一步中的停止服务器函数: WSACleanup(); 客户端: Step 1: 新建>项目>C++>MFC应用程序 Step 2: 在程序文件.h中引入socket库: ...; // TODO: 在此添加控件通知处理程序代码 CString strMsg; GetDlgItemText(IDC_EDIT_INPUT_MSG,strMsg); if (bIsServer...NULL; m_ConnectSock = INVALID_SOCKET; bIsServer = -1; bShutDown = FALSE; } Step 12: 在程序主窗口退出程序的消息函数中释放套接字
避免CPU空转 应用程序经常会涉及到RPC,数据库访问,磁盘IO等操作,这些操作的速度比CPU慢很多,而在等待这些响应时,CPU却不能去处理新的请求,导致这种单线程的应用程序性能很差。...内核对象与其他类型的对象 Windows进程中除了内核对象外还有其他类型的对象,比如窗口,菜单,字体等,这些属于用户对象和GDI对象。...(这里用切换,是因为本质上,同一时间CPU只能执行一个任务,显式的多线程是CPU在多个任务之间来回切换,因为速度及快,所以我们理解为多个任务同时进行,也就是多线程。)...B窗口 DWORD WINAPI SellTicketA(void* lpParam) { while (1) { EnterCriticalSection(&g_csA);//进入临界区...B如果访问关键代码段时,使用了多个临界区对象,就要注意防止线程死锁的发生。 另外,如果需要在多个进程间的各个线程间实现同步的话,可以使用互斥对象和事件对象或者信号量。