#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