1.获取客户区矩形区域

RECT cliRect;
GetClientRect(hWnd, &cliRect);

2.获取窗口上下文句柄

HDC hdc = GetDC(hWnd);
//....
ReleaseDC(hWnd, hdc);

3.LPWSTR   与 char * 互转

int32_t WToChar(LPWSTR szWstr, char szCstr[], const int32_t chrLen)
{
int iLength = WideCharToMultiByte(CP_ACP, , szWstr, -, NULL, , NULL, NULL);
return WideCharToMultiByte(CP_ACP, , szWstr, -, szCstr, iLength, NULL, NULL);
} int32_t CharToW(const char* szCstr, WCHAR szWstr[], const int32_t wstrLen)
{
int iLength = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szCstr, -, NULL, );
return MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szCstr, -, szWstr, iLength);
}

4.获取带颜色的画刷

COLORREF colorObs = 0x9D9D9D;
HBRUSH hbObs = CreateSolidBrush(colorObs);

//....

DeleteObject(hbObs);

5.绘制矩形

Rectangle(hdc ,left,top,right,bottom);

6.填充矩形

FillRect(hdc, &rect, hbObs);

7.刷新整个窗口

InvalidateRect(hWnd, NULL, TRUE);

8.设置窗口标题

SetWindowText(hWnd, szText);

9.打开文件对话框

bool OpenFileDialog(HWND hWnd, char szFileName[MAX_PATH])
{
WCHAR szFile[MAX_PATH] = { };
OPENFILENAME ofn = { OPENFILENAME_SIZE_VERSION_400 };
ofn.hwndOwner = hWnd;
// 过滤器,以\0相隔: 显示名称\0过滤器\0显示名称\0过滤器\0\0
ofn.lpstrFilter = TEXT("txt(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrTitle = TEXT("选择文件");
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
TCHAR szCurDir[MAX_PATH];
GetCurrentDirectory(sizeof(szCurDir), szCurDir);
ofn.lpstrInitialDir = szCurDir;//设置对话框显示的初始目录
BOOL bOk = GetOpenFileName(&ofn);
if (!bOk)
{
return false;
}
//MessageBox(NULL, ofn.lpstrFile, TEXT("Tips_Yes"), MB_OK);
memset(szFileName, , sizeof(szFileName));
WToChar(ofn.lpstrFile, szFileName, sizeof(szFileName));
return true;
}

10.保存文件对话框

bool SaveFileDialog(HWND hWnd, char szFileName[MAX_PATH])
{
WCHAR szFile[MAX_PATH] = { };
OPENFILENAME ofn = { OPENFILENAME_SIZE_VERSION_400 };
ofn.hwndOwner = hWnd;
// 过滤器,以\0相隔: 显示名称\0过滤器\0显示名称\0过滤器\0\0
ofn.lpstrFilter = TEXT("txt(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrTitle = TEXT("选择文件");
ofn.Flags = OFN_OVERWRITEPROMPT; // 覆盖提示
TCHAR szCurDir[MAX_PATH];
GetCurrentDirectory(sizeof(szCurDir), szCurDir);
ofn.lpstrInitialDir = szCurDir;//设置对话框显示的初始目录
BOOL bOk = GetSaveFileName(&ofn);
if (!bOk)
{
return false;
}
//MessageBox(NULL, ofn.lpstrFile, TEXT("Tips_Yes"), MB_OK);
memset(szFileName, , sizeof(szFileName));
WToChar(ofn.lpstrFile, szFileName, sizeof(szFileName));
return true;
}

11.获取或设置控件文字

GetDlgItemText(hDlg, IDC_EDIT_ROW, szTRow, );
SetDlgItemText(hDlg, IDC_EDIT_COL, szTCol);

12.获取光标位置

POINT pt;
GetCursorPos(&pt);

13.屏幕坐标与窗口坐标之间的转化

ScreenToClient(hWnd, &pt);
ClientToScreen(hWnd, &pt);

14.设置窗口位置和大小

SetWindowPos(hWnd, NULL, nX, nY, nWidth, nHeight, false);

15. 打开右键菜单

void UIManager::OnContextMenu(const HWND &hWnd, const RECT &cliRect, const POINT &clickPt)
{
POINT tmpt = clickPt;
ScreenToClient(hWnd, &tmpt);
if (PtInRect(&cliRect, tmpt) == FALSE){ return; }
HMENU hroot = LoadMenu((HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), MAKEINTRESOURCE(IDR_CONTEXT));
if (!hroot){ return; }
HMENU hpop = GetSubMenu(hroot, 0);
if (!hpop){ return; }
ClientToScreen(hWnd, &tmpt);
//显示快捷菜单
TrackPopupMenu(hpop,
TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON,
tmpt.x,
tmpt.y,
,
hWnd,
NULL);
// 用完后要销毁菜单资源
DestroyMenu(hroot);
}

几个常见Win32 API函数的更多相关文章

  1. Detours简介 (拦截x86机器上的任意的win32 API函数)

    Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Det ...

  2. win32 API函数

    cozy的博文 win32 API函数大全   (2008-03-15 16:28) 分类: 个人日记 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WN ...

  3. C#中导入Win32 API函数

    C#中导入Win32 API的方法: 1.引用命名空间 using System.Net.Security; using System.Runtime.InteropServices; 2. [Dll ...

  4. 调用win32 api 函数SendMessage() 实现消息直接调用

    简单的调用例子, 适合初学者学习,当然 我也是初学者. #include <windows.h> #include <stdio.h> #include <stdlib. ...

  5. C# 通过调用Win32 API函数清除浏览器缓存和cookie

    public enum ShowCommands : int { SW_HIDE = , SW_SHOWNOrmAL = , SW_NOrmAL = , SW_SHOWMINIMIZED = , SW ...

  6. Win32 API编程——前言

    一丶什么是Win32 API? 微软为了保护操作系统的安全性和稳定性,把系统分为内核层和用户层(内核层的代码只能在当CPU的特权级为R0状态下执行,用户层的代码在CPU特权级为R0和R3都能执行),w ...

  7. C#调用Win32 api学习总结

    从.NET平台调用Win32 API Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微 ...

  8. 【.Net】从.NET平台调用Win32 API

    小序        Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制 ...

  9. WINDOWS-API:API函数大全

    操作系统除了协调应用程序的执行.内存分配.系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮肋应用程序达到开启视窗.描绘图形.使用周边设备的目的,由 ...

随机推荐

  1. Codeforces 552C Vanya and Scales(思路)

    题目大概说有101个质量w0.w1.w2.....w100的砝码,和一个质量m的物品,问能否在天平两边放物品和砝码使其平衡. 哎,怎么没想到..注意到w0.w1.w2.....w100—— 把m转化成 ...

  2. NUC_TeamTEST_C && POJ2299(只有归并)

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 42627   Accepted: 15507 ...

  3. BZOJ1701 : [Usaco2007 Jan]Cow School牛学校

    枚举剩下的分数个数$k$,设最高的$k$个分数和的分子分母分别为$U$和$D$. 那么在选了的里面找到$A=\min(Dt[x]-Up[x])$,没选的里面找到$B=\max(Dt[x]-Up[x]) ...

  4. 再探CSS 中 class 命名规范

    一直以来我的CSS 的 class命名都是比较随意,有时采用驼峰式.有时采用下划线,好像没有什么统一的标准,想到什么英文单词就拿过来用,这对于自己瞎写的小项目无伤大雅,遇到冲突的问题可稍加调整改变即可 ...

  5. Sphinx 配置文件的说明【备忘】

    ## 数据源src1 source src1 { ## 说明数据源的类型.数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,python ## 有人会奇怪,python ...

  6. 【HDU】4089 Activation

    http://acm.hdu.edu.cn/showproblem.php?pid=4089 题意: 有n个人排队等着在官网上激活游戏.主角排在第m个. 对于队列中的第一个人.有以下情况:1.激活失败 ...

  7. 设置 tableview 的背景颜色,总是不生效

    1.只设置了背景图片,却忘记了取消掉 cell 的背景颜色(可以通过层次结构来观察) UIImageView *bgView = [[UIImageView alloc]initWithFrame:s ...

  8. 基于FSIOT_A 实验平台SAM3S4B cortex-M3的温湿度采集

    作者:卢老师,华清远见嵌入式学院讲师. DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器.它应用专用的数字模块采集技术和温湿度传感器技术,确保产品具有极高的可靠性与卓越的长期稳 ...

  9. 纪念逝去的岁月——C/C++字符串旋转

    几年前,我还不会写这个 例如: 1.向右→旋转5个字符 输入:HelloWorld 输出:WorldHello 2.向右→旋转3个字符 输入:HelloWorld 输出:rldHelloWo 代码 # ...

  10. Linux 常见的单词缩写

    命令缩写:ls:list(列出目录内容)cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包管理 ...