OpenCSP开源程序解析之OPENCSP_AuthUI.cpp

#include ".\opencsp_authui.h"
#include ".\resource.h"

extern HINSTANCE g_hModule;     // 当前实例

MY_DATA_BLOB OPENCSP_AuthUI::_authData;   //MY_DATA_BLOB二进制容器

INT_PTR OPENCSP_AuthUI::showAuthUI()
{//在32位操作系统,64位操作系统上,一个int是4或8个字节。用INT_PTR代替int可以让代码具有更好的移植性
    INT_PTR hr;
    WORD wLangPID = PRIMARYLANGID(GetSystemDefaultLangID());  //获取当前系统是什么语言
    switch(wLangPID)
    {
    case LANG_CHINESE:  //中文
        hr = DialogBox(g_hModule, MAKEINTRESOURCE(IDD_DIALOG_PIN_CN),
            NULL, reinterpret_cast<DLGPROC>(UIProc));
        break;
    default:                      //MAKEINTRESOURCE,把一个数字类型转换成指针类型的宏
        hr = DialogBox(g_hModule, MAKEINTRESOURCE(IDD_DIALOG_PIN_EN),
            NULL, reinterpret_cast<DLGPROC>(UIProc));
        break;
    }
    return hr;
}

void OPENCSP_AuthUI::getAuthData(MY_DATA_BLOB& authData)
{
    authData = _authData;
}

//处理发送给窗口的消息函数
INT_PTR CALLBACK OPENCSP_AuthUI::UIProc(HWND hUI, UINT uMsg, WPARAM wParam, LPARAM lParam)
{   //hUI窗口的句柄,uMsg消息类型,wParam表示通知码(例如单击,双击,SETFOCUS等),lParam表示子窗口句柄
    switch(uMsg)
    {
    case WM_INITDIALOG: //WM_INITDIALOG 消息是对话框才能收到的消息,表明对话框及其所有子控件都创建完毕
        return TRUE;
    case WM_COMMAND:    //WM_COMMAND产生的条件:点击菜单,点击加速键,点击子窗口按钮,点击工具栏按钮
        {
            switch(wParam)
            {
            case IDOK:   //选择了对话框OK键
                {
                    TCHAR szPin[MAX_PATH] = {0x0};
                    GetDlgItemText(hUI, IDC_EDIT_PIN, szPin, MAX_PATH);//pin码
                    _authData.clear();
                    _authData.insert(_authData.end(), szPin, szPin + lstrlen(szPin));
                    EndDialog(hUI, S_OK);
                    return TRUE;
                }
                break;
            case IDCANCEL:  //选择取消键
                {
                    EndDialog(hUI, SCARD_W_CANCELLED_BY_USER);
                    return TRUE;
                }
            }
        }
    }
    return FALSE;
}
时间: 2024-10-23 02:36:40

OpenCSP开源程序解析之OPENCSP_AuthUI.cpp的相关文章

OpenCSP开源程序解析之OPENCSP_Main.cpp

#include "OPENCSP_define.h" #include "OPENCSP_Keyset.h" #include "OPENCSP_Provider.h" #include ".\opencsp_cardaccess.h" #pragma data_seg("_OPENCSP_SHARED") /* Two variables are used to OPENCSP_UserMutext *

OpenCSP开源程序解析之OPENCSP_Alg.cpp

#include ".\opencsp_alg.h" DWORD OPENCSP_Alg::_index = 0; BOOL OPENCSP_Alg::isAlgSupported(ALG_ID algId) //判断algId是否是支持的算法 { for (DWORD i = 0; i < M_OPENCSP_ALG_INFO_NUM; i++) //M_OPENCSP_ALG_INFO_NUM 支持的算法的个数 { if (s_algInfo[i].aiAlgid == al

OpenCSP开源程序解析之OPENCSP_Hash.cpp

#include ".\opencsp_hash.h" //HASH函数主要用于完整性校验和提高数字签名的有效 OPENCSP_M$CSP* OPENCSP_Hash::_csp; //hKey如果哈希算法是密钥哈希,如HMAC或MAC 算法,就用此密钥句柄传递密钥.对非密钥算法,此参数为NULL OPENCSP_Hash::OPENCSP_Hash(ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags)//Algid哈希算法的标示符 :_algId(

OpenCSP开源程序解析之OPENCSP_Mutex.cpp

#include ".\opencsp_mutex.h" unsigned long OPENCSP_UsrMutex::_ulLockCnt(0); DWORD OPENCSP_UsrMutex::_dwProcessId(0); OPENCSP_Mutex OPENCSP_UsrMutex::_dscs; OPENCSP_Mutex::OPENCSP_Mutex() //线程同步 :_sect() //构造函数后加冒号 ,使用初始化成员列表对对象进行初始化 {//初始化一个临界资源

OpenCSP开源程序解析之OPENCSP_M*CSP.cpp

#include ".\opencsp_m$csp.h" OPENCSP_M$CSP* OPENCSP_M$CSP::_instance; OPENCSP_M$CSP::OPENCSP_M$CSP(void) { BOOL fOK = FALSE; fOK = CryptAcquireContext(&_hProv, TEXT("Keyset in MSCSP used by OpenCSP"), MS_ENHANCED_PROV, PROV_RSA_FUL

MFC画图程序解析笔记一

这是 //if not define的简写,是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译. 目录 1定义 2内容 3作用 4形式 1定义编辑 #define x ... #endif C语言在对程序进行编译时,会先根据预处理命令进行"预处理".C语言编译系统包括预处理,编译和链接等部分. #ifndef x //先测试x是否被宏定义过 #define x 程

Joomla软件功能介绍与开源程序大比拼Joomla,wordpress,Drupal哪个好?

Joomla 软件功能介绍:    Joomla!是一套在国外相当知名的内容管理系统 (Content Management System, CMS),它属于Portal(企业入口网站)类型,顾名思义,就是比较适合作为商业类型的网站程序.一般人对这类型的内容管理系统可能会有以下的别名来称呼: ■ 架站程序(或软件) ■ 快速架站程序(或软件) ■ 整站程序 Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,可以在Linux. Windows.MacOSX等各种不同的平台上执行.

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别 分类: 开放项目2012-07-23 17:28 6712人阅读 评论(0) 收藏 举报 tiffimagecompression引擎pascalcharacter --------------------------------------------------低调的分割线--------------------------------------------------- Linux下有两个重要的编程准则

fastjson是阿里巴巴的开源JSON解析库

fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化 https://github.com/alibaba/fastjson/wiki/Quick-Start-CN fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串