| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2294 人关注过本帖
标题:问个很基础的问题,怎么定义unicode,是编译的时候messageboxex的地址编译成 ...
只看楼主 加入收藏
hcksfch
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:29 
问个很基础的问题,怎么定义unicode,是编译的时候messageboxex的地址编译成messageboxexw的地址
,如题,定义unicode的代码不会写,自己反汇编后总是messageboxexa

[ 本帖最后由 hcksfch 于 2012-9-30 21:30 编辑 ]
搜索更多相关主题的帖子: 基础 
2012-09-30 21:28
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
最简单的方法是直接调用相应的W版本的API win32汇编中对unicode的支持比较差 主要是编译器的unicode的支持比较差
2012-09-30 21:29
hcksfch
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-30
收藏
得分:0 
回复 2楼 zklhp
用user32.inc里的定义和条件汇编实现要怎么用?



[ 本帖最后由 hcksfch 于 2012-9-30 21:37 编辑 ]
2012-09-30 21:32
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用hcksfch在2012-9-30 21:32:24的发言:

,用messageboxex,怎么实现user32.inc里的定义和条件汇编怎么用?
http://www.

给个例子罢 以前写的

调用不难 直接invoke 相应的W版本API就可以了 麻烦的是 字符串要用unicode 可汇编的编译器不支持定义这个 虽然有宏可以定义英文的unicode 但总是不好 所以 非要用的话可以用其他软件转换后插入。。
2012-09-30 21:37
hcksfch
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-30
收藏
得分:0 
回复 4楼 zklhp
我的意思是:我不会用通过定义unicode来使编译器将messageboxex自动转换为messageboxexw,不考虑转换后乱码。masm32编译器,
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 3rd Edition>
; by 罗云彬, http://www.
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Test.asm
; 编程环境测试代码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff Test.asm
; rc Test.rc
; Link /subsystem:windows Test.obj Test.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .386
        .model flat,stdcall
        option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include        windows.inc
include        user32.inc
includelib    user32.lib
include        kernel32.inc
includelib    kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
__UNICODE__=1  ;这个代码没用
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .const
szCaption    db    '恭喜',0
szText        db    '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .code
start:
        invoke    MessageBoxEx,NULL,offset szText,offset szCaption,MB_OK,NULL
        invoke    ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        end    start


[ 本帖最后由 hcksfch 于 2012-9-30 21:46 编辑 ]
2012-09-30 21:43
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
不知道你了解不了解win32汇编的实质

win32汇编的编译器是微软的MASM 其他的头文件 库等大部分是网友做的 以MASM32包的形式提供

问题就是这些头文件不是官方的 所以问题很大 有些地方遵循了有UNICODE用W版API 有些地方直接写死了只能用ASCII的版本 所以我告诉你 最好直接用W版

例子 MASMPlus带的头文件

MessageBoxExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
MessageBoxEx equ <MessageBoxExA>

MessageBoxExW PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD

看到了么 这里 只能用W来调用 你写神马UNICODE都没用 这里写死了

也对 因为MASM最起码在6.x的版本是不支持unicode的定义的 而高版本MASM由于不支持高级宏所以开发起来不方便 虽然可以用宏来支持英语的unicode定义 但对于中文貌似没有好的方法


[ 本帖最后由 zklhp 于 2012-9-30 21:50 编辑 ]
2012-09-30 21:49
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
很抱歉我能说的就这些了 如果您不满意可以搜索一下 祝好运
2012-09-30 21:51
hcksfch
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-30
收藏
得分:0 
回复 6楼 zklhp
这是masm32中的定义,我该怎么用呢,多谢了
程序代码:
MessageBoxA PROTO STDCALL :DWORD,:DWORD,:DWORD,:DWORD
IFNDEF __UNICODE__
  MessageBox equ <MessageBoxA>
ENDIF
MessageBoxExA PROTO STDCALL :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
IFNDEF __UNICODE__
  MessageBoxEx equ <MessageBoxExA>
ENDIF
MessageBoxExW PROTO STDCALL :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
IFDEF __UNICODE__
  MessageBoxEx equ <MessageBoxExW>
ENDIF
2012-09-30 21:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
简单搜了一下 貌似新版的MASM32包支持这个了

UNICODE Support
The MASM32 SDK has a completely new include file system that supports either ASCII or UNICODE by the inclusion of an equate, __UNICODE__ . Two new macro systems support UNICODE text that can be used in much the same manner as embedded ASCII text.

我用的比较老 不支持也正常

可惜啊 中文的问题很难解决呀
2012-09-30 21:55
hcksfch
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-30
收藏
得分:0 
罗云彬的win32刚看到开头就蒙了
2012-09-30 21:58
快速回复:问个很基础的问题,怎么定义unicode,是编译的时候messageboxex的地址 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077499 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved