15,979
社区成员
发帖
与我相关
我的任务
分享
if(IDOK!=DialogBoxParam(g_hInstDLL,MAKEINTRESOURCE(IDD_DLG_PIN),hwndParent,PinDlgProc,(LPARAM)&PinDlgParam))
return RESULT_USER_CANCELED;
// Pin Dlg Proc
INT_PTR CALLBACK PinDlgProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BOOL fRet;
HWND hWndEdit, hWndBtn;
PPINDLGPARAM pParam;
int index;
short capsKeyState;
BOOL bCapsChg;
switch(uMsg) {
case WM_INITDIALOG:
fRet=FALSE;
SetWindowLongPtr(hwndDlg,GWLP_USERDATA,(LONG_PTR)lParam);
CenterDlg(hwndDlg);
pParam=(PPINDLGPARAM)GetWindowLongPtr(hwndDlg,GWLP_USERDATA);
DisplayPINDlgWithKeyBoard(hwndDlg, 1, pParam->szCardId);
SetForegroundWindow(hwndDlg);
break;
case WM_COMMAND:
fRet=FALSE;
int nPinLen;
LPSTR pszPin;
HWND hwndControl;
if ( BN_CLICKED != HIWORD(wParam) )
break;
if ( IDOK == LOWORD(wParam) ) {
fRet=TRUE;
pParam=(PPINDLGPARAM)GetWindowLongPtr(hwndDlg,GWLP_USERDATA);
// Get pin edit control
hwndControl=GetDlgItem(hwndDlg,IDC_EDIT_PIN);
// Get pin length
nPinLen=GetWindowTextLengthA(hwndControl);
// Alloc memory for save pin
pszPin=new CHAR[nPinLen+1];
if(NULL==pszPin)
break;
ZeroMemory(pszPin,nPinLen+1);
// Get pin
GetWindowTextA(hwndControl,pszPin,nPinLen+1);
// Generate pin
GeneratePin(pszPin,lstrlenA(pszPin),pParam->szPin);
ZeroMemory(pszPin,lstrlenA(pszPin));
delete [] pszPin;
EndDialog(hwndDlg,IDOK);
}
else if(IDCANCEL==LOWORD(wParam)) {
fRet=TRUE;
EndDialog(hwndDlg,IDCANCEL);
}
else
{//其他具体处理}
break;
default:
fRet=FALSE;
break;
}
return fRet;
}
hWnd=CreateDialog(g_hInstDLL, MAKEINTRESOURCE(IDD_DLG_WAITING), hwndParent, WaitRSAGenDlgProc);
用完后主动销毁
if ( hWnd )
DestroyWindow(hWnd);
INT_PTR CALLBACK WaitRSAGenDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
BOOL fRet = FALSE;
switch ( uMsg ) {
case WM_INITDIALOG:
CenterDlg(hwndDlg);
HCURSOR hWaitCursor;
hWaitCursor = LoadCursor(NULL, IDC_WAIT);
wrgdp_holdcursor = ::SetCursor(hWaitCursor);
break;
case WM_DESTROY:
if ( wrgdp_holdcursor )
::SetCursor(wrgdp_holdcursor);
break;
case WM_COMMAND:
break;
}
return fRet;
}