Windows核心编程&错误处理
知识概要
(1) MAKELANGID
Windows宏,用一个来主语言标识和从语言标识创建一个语言标识符
MAKELANGID(ushort usPrimaryLanguage, ushort usSubLanguage);
usPrimaryLanguage:主要语言标识符,可以是一个预定于的值或一个用户定义的主要语言的值。对于一个用户定义的语言中,
值范围0x0200到0x03FF,其他的留给系统
usSubLanguage:从语言标识符,可以是一个预定于的值或一个用户定义的主要语言的值。对于一个用户定义的语言中,值
范围0x20到0x03F,其他的留给系统
|
Primary language identifier
|
Sublanguage identifier
|
Meaning
|
|---|---|---|
|
LANG_NEUTRAL
|
SUBLANG_NEUTRAL
|
Language neutral
|
|
LANG_NEUTRAL
|
SUBLANG_DEFAULT
|
User default language
|
|
LANG_NEUTRAL
|
SUBLANG_SYS_DEFAULT
|
System default language
|
|
LANG_NEUTRAL
|
SUBLANG_CUSTOM_DEFAULT
|
Windows Vista and later:Default custom locale
|
|
LANG_NEUTRAL
|
SUBLANG_CUSTOM_UNSPECIFIED
|
Windows Vista and later:Unspecified custom locale
|
|
LANG_NEUTRAL
|
SUBLANG_UI_CUSTOM_DEFAULT
|
Windows Vista and later:Default custom Multilingual User Interface locale
|
| 标志 | 标志说明 |
|---|---|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER
|
函数会分配一个足够大的缓冲区保存格式化消息,并且通过lpBuffer指向该
地址。
|
|
FORMAT_MESSAGE_ARGUMENT_ARRAY
|
Arguments参数不是指向va_list结构体,但是是一个指向保存参数的数据。
|
|
FORMAT_MESSAGE_FROM_HMODULE
|
lpSource参数是需要去搜索的一个包含消息表的模块线程。如果lpSource
是NULL,当前进程的应用图像会被搜索,这个标志不能同FORMAT_ME
SSAGE_FROM_STRING使用。
|
|
FORMAT_MESSAGE_FROM_STRING
|
lpSource参数是一个指向以NULL结尾的字符串,字符串包含一个消息定义,
这个消息定义可以包含插入序列。此标志最好不要和FORMAT_MESSAGE_F
ROM_HMODULE或者FORMAT_MESSAGE_FROM_SYSTEM使用
|
|
FORMAT_MESSAGE_FROM_SYSTEM
0x00001000
|
函数会为了请求的信息而搜索系统的消息表资源。如果标志同时也指定了
FORMAT_MESSAGE_FROM_HMODULE,那么函数会先在lpSource指定
的模块中搜索请求的消息,如果搜索不到,就去搜索系统消息表资源。此
标志不能与FORMAT_MESSAGE_FROM_STRING使用。
|
|
FORMAT_MESSAGE_IGNORE_INSERTS
|
消息定义中的插入序列会被一直忽略和跳过直到输出缓冲区不改变,并且
Arguments会被忽略。
|
CString strErrorNo = "";
GetDlgItem(IDC_ERRONUM_EDIT)->GetWindowText(strErrorNo);
if (!strcmp(strErrorNo, ""))
{
// 请输入代码错误编号
return;
}
int nNo = atoi(strErrorNo);
DWORD dwLanguageID = MAKELANGID(LANG_NEUTRAL, LANG_NEUTRAL);
] = {};
// HLOCAL hlocal;
DWORD dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, nNo, dwLanguageID, (LPTSTR)cBuff, , NULL);
if (dwRet)
{
//CString str = cBuff;
char *p = (char *)*(int *)cBuff;
SetDlgItemText(IDC_SHOWMSG_EDIT, p/*(LPCTSTR)LocalLock(hlocal)*/);
}
Windows核心编程&错误处理的更多相关文章
- 《Windows核心编程》第一讲 对程序错误的处理
一个Windows函数通常都有一个有意义的返回值类型,它标志着这个函数的运行状态,即函数运行成功与否.windows常用的函数类型如下图: 从系统内部来讲,当一个Windows函数检测到一个错误时,它 ...
- Windows核心编程第一章.错误处理
Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时 ...
- windows核心编程---第二章 字符和字符串处理
使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是指UTF-16.也 ...
- 【windows核心编程】 第八章 用户模式下的线程同步
Windows核心编程 第八章 用户模式下的线程同步 1. 线程之间通信发生在以下两种情况: ① 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性 ② 一个线程需要通知其他线程 ...
- 《windows核心编程系列》二谈谈ANSI和Unicode字符集 .
http://blog.csdn.net/ithzhang/article/details/7916732转载请注明出处!! 第二章:字符和字符串处理 使用vc编程时项目-->属性-->常 ...
- 《windows核心编程系列》十八谈谈windows钩子
windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...
- 《Windows核心编程》读书笔记 上
[C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对 ...
- C++Windows核心编程读书笔记
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...
- windows核心编程 DLL技术 【转】
注:本文章转载于网络,源地址为:http://blog.csdn.net/ithzhang/article/details/7051558 本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑 ...
随机推荐
- InnoDB锁
共享锁和排它锁 InnoDB实现了标准的行级锁,包括两种类型:共享锁(S)和排它锁(X) 一个共享锁(S)允许事务持有这种锁来读取一行 一个排它锁(X)允许事务持有这种锁来修改或删除一行 如果事务T1 ...
- 表单验证插件--formvalidation
表单验证是一个非常基础的功能,当你的表单项少的时候,可以自己写验证,但是当你的表单有很多的时候,就需要一些验证的插件.今天介绍一款很好用的表单验证插件,formvalidation.其前身叫做boot ...
- K:图相关的最小生成树(MST)
相关介绍: 根据树的特性可知,连通图的生成树是图的极小连通子图,它包含图中的全部顶点,但只有构成一棵树的边:生成树又是图的极大无回路子图,它的边集是关联图中的所有顶点而又没有形成回路的边. 一个有 ...
- c#中常用集合类和集合接口之接口系列【转】
常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaoji ...
- 【JavaScript_DOM 百度搜索框】
今天给大家带来的事一个简单的百度的历史搜索框,大家在搜索东西的时候,百度会自动给你显示你最近搜索过的一些东西,那这个拿js怎么做呢? 我们一起来学习吧 这是一个HTML页面: <!DOCTYPE ...
- mysql一些函数的记录
今天瞎搞还是弄不出报名程序,偶尔记住了几个mysql函数 mysql_connect()连接数据库 mysql_error()输出文本报错 mysql_select_db()函数设置活动的MySQL ...
- 类A是公共的,应在名为A.java的文件中声明错误
第一种!!! “类A是公共的,应在名为A.java的文件中声明”这句话需要分两步来理解: 1.如果类A被声明为公共的(public),那么必须将类A保存在名为A.java的文件中: 2.反之,在一个文 ...
- [bzoj3203][Sdoi2013]保护出题人
人生第一道三分?... 把进攻序列里的前i只僵尸看成一个点,横坐标是第i只僵尸到达的时间,纵坐标是这i只僵尸的血量总和..就是说植物必须在这段时间内输出这些伤害..那么单位时间的输出伤害就是斜率了. ...
- HDU4920-Matrix multiplication-矩阵乘法 51nod-1137 矩阵乘法
先贴两个基础的矩阵乘法,以后再贴一些题. hdu. Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- codeforces A. Orchestra B. Island Puzzle
A. Orchestra time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...