奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> VC >> 在VC6.0中使用MSLU编写WIN98/2K下的UNICODE程序
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • VC中利用多线程技术实

  • 利用OpenGL实现三维绘

  • 基于Visual C++的Wins

  • 基于Visual C++6.0的D

  • Visual C++ MFC 中常用

  • 在MFC下如何定义全局变

  • 使用MFC在应用程序中嵌

  • VC++中进程与多进程管

  • 在VC6.0中使用MSLU编写WIN98/2K下的UNICODE程序
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

    编写WIN98系统下使用的UNICODE程序,可以使用MSLU。

    一、使用MSLU的选项

    二、调用unicows.dll失败的处理

    三、无法在MSLU上正常工作的函数处理

    四、对于ON_NOTIFY通知消息的处理。



    一、使用MSLU的选项

    MFC的静态链接Release版本

    C/C++选项:

    去掉_MBCS添加_UNICODE,UNICODE

    Link选项:

    Output->Entry Point Symbol:

    wWinMainCRTStartup

    Object/Library modules:

    unicows.lib kernel32.lib advapi32.lib user32.lib gdi32.lib shell32.lib comdlg32.lib version.lib mpr.lib rasapi32.lib winmm.lib winspool.lib vfw32.lib oleacc.lib oledlg.lib uafxcw.lib libcmt.lib

    MFC的静态链接调试版本:

    unicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib

    二、调用unicows.dll失败的处理

    当WIN98下无法加载unicows.dll时注册以下函数进行通知。

    HMODULE LoadUnicowsProc(void)
    {
    HMODULE hMod = LoadLibraryA("Unicows.dll");
    if (hMod == 0)
    {
      MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",
       "MWP",MB_ICONSTOP|MB_OK);
      _exit(-1);
    }
    return (hMod);
    }
    extern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;

    三、无法在MSLU上正常工作的函数处理

    有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。

    例如mmioOpen

    #ifdef _UNICODE
    if (IsWin98())
    {
      USES_CONVERSION;
      if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))
      {
       AfxMessageBox(IDS_ERR_OPENWAVEFILE);
       return FALSE;
      }
    }
    else
    {
      if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
      {
       AfxMessageBox(IDS_ERR_OPENWAVEFILE);
       return FALSE;
      }
    }
    #else
    if(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
    {
      AfxMessageBox(IDS_ERR_OPENWAVEFILE);
      return FALSE;
    }
    #endif

    四、对于ON_NOTIFY通知消息的处理。

    对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:

    ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)

    改为

    ON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)
    ON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)

    这样可以在WIN98/2K下正常工作。

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.