本文介绍了未定义的函数引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的资源标头和资源文件。但它显示未定义的引用'SCardEstablishContext @ 16'和'SCardConnectA @ 24'

该怎么办?

i have my resource header and resource file. but it shows undefined reference to 'SCardEstablishContext@16' and 'SCardConnectA@24'
what to do?

#include <windows.h>
#include <dir.h>
#include
#include
#include <stdio.h>
#include "resource.h"
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include <ctype.h>
#include <dirent.h>
#include <winscard.h>
char print[100];
char print1[100];
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
HWND g_hToolbar = NULL;
char *ctoh(char *s,int len)
{
    int len1 = (len*2);
    char *hex;
    hex = (char*)malloc(len1+1);
    int i,j=0;
    for(i=0;i<len;i++)>
    {
        if(s[i]>='@'&&s[i]<='I')
        {
            hex[j] = '4';
            hex[j+1] = (s[i]-'@')+'0';
            j = j+2;
        }
        else if(s[i]>='`'&&s[i]<='i')
        {
            hex[j] = '4';
            hex[j+1] = (s[i]-'`')+'0';
            j = j+2;
        }
        else if(s[i]>='J'&&s[i]<='O')
        {
            hex[j] = '4';
            hex[j+1] = (s[i]-'J')+'A';
            j = j+2;
        }
        else if(s[i]>='j'&&s[i]<='o')
        {
            hex[j] = '4';
            hex[j+1] = (s[i]-'j')+'A';
            j = j+2;
        }
        else if(s[i]>='P'&&s[i]<='Y')
        {
            hex[j] = '5';
            hex[j+1] = (s[i]-'P')+'0';
            j = j+2;
        }
        else if(s[i]>='p'&&s[i]<='y')
        {
            hex[j] = '5';
            hex[j+1] = (s[i]-'p')+'0';
            j = j+2;
        }
        else if(s[i]>='Z'&&s[i]<='_')
        {
            hex[j] = '5';
            hex[j+1] = (s[i] - 'Z') + 'A';
            j = j+2;
        }
        else if(s[i]>='z'&&s[i]<='~')
        {
            hex[j] = '5';
            hex[j+1] = (s[i] - 'Z') + 'A';
            j = j+2;
        }
        else if(s[i] >= ' '&& s[i]<= ')')
        {
            hex[j] = '2';
            hex[j+1] =(s[i]-' ') + '0';
            j = j+2;
        }
        else if(s[i] >= '0'&& s[i]<= '9')
        {
            hex[j] = '3';
            hex[j+1] =(s[i]-'0') + '0';
            j = j+2;
        }
        else if(s[i]>='*'&&s[i]<='/')
        {
            hex[j] = '2';
            hex[j+1] = (s[i] - '*') + 'A';
            j = j+2;
        }
        else if(s[i]>=':'&&s[i]<='?')
        {
            hex[j] = '3';
            hex[j+1] = (s[i] - ':') + 'A';
            j = j+2;
        }
    }
    hex[j] = '\0';
    return hex;
}
void dhex(int n, char hex[]) /* Function to convert decimal to hexadecimal. */
{
    int i=0,rem;
    if(n<=16)
    {
        hex[0] = '0';
        rem=n%16;
        i=1;
        switch(rem)
        {
            case 10:
              hex[i]='A';
              break;
            case 11:
              hex[i]='B';
              break;
            case 12:
              hex[i]='C';
              break;
            case 13:
              hex[i]='D';
              break;
            case 14:
              hex[i]='E';
              break;
            case 15:
              hex[i]='F';
              break;
            default:
              hex[i]=rem+'0';
              break;
        }
    }
    else
    {
        while (n!=0)
        {
            rem=n%16;
            switch(rem)
            {
                case 10:
                  hex[i]='A';
                  break;
                case 11:
                  hex[i]='B';
                  break;
                case 12:
                  hex[i]='C';
                  break;
                case 13:
                  hex[i]='D';
                  break;
                case 14:
                  hex[i]='E';
                  break;
                case 15:
                  hex[i]='F';
                  break;
                default:
                  hex[i]=rem+'0';
                  break;
            }
            ++i;
            n/=16;
        }
        strrev(hex);   /* Reverse string */
    }
}
/* This is a function to open a directory in a listbox*/
void ODIR(HWND hwnd, char* s)
{
    //we are opening the directory where we have created all the profiles
    DIR *dp;
    struct dirent *ep;
    dp = opendir(s);
    char* buf;
    if(dp!=NULL)
    {
        int j=0;
        int i=0;
        while((ep=readdir(dp)))
        {
            i++;
            if(i>=3)
            {
                buf = (char*)malloc(sizeof(ep->d_name));
                strcpy(buf,ep->d_name);
                //Adding the folder name to the listbox
                SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)buf);
                //LB_SETITEMDATA is used to set some data value to the items of list box,
                //this value will be used by LB_GETITEMDATA to get the text of the item selected
                SendDlgItemMessage(hwnd,IDC_LIST, LB_SETITEMDATA,j,(LPARAM)buf);
                j++;
            }
        }
    }
    else
    {
        MessageBox(hwnd, "You didn't enter anything!", "Warning", MB_OK);
    }
}
/* This function Calculates the length of the value field in FCP */
int callen1(int x)
{
    if(x%2==1)
        return ((x/2)+1);
    else
        return x/2;
}
/* This function converts hexadecimal number into integer */
/*long int htoi(char s[])
{
    long int val = 0;
    int x = 0;
    if(s[x]== '0' &&(s[x+1]=='x'||s[x+1]=='X'))
        x+=2;
    while(s[x]!='\0')
    {
        if(val>UINT_MAX) return 0;
        else if(s[x]>='0' && s[x]<='9')
        {
            val = val*16+s[x] - '0';
        }
        else if(s[x]>='A'&&s[x]<='F')
        {
            val = val*16 + s[x] - 'A' +10;
        }
        else if(s[x]>='a' && s[x] <= 'f')
        {
            val = val*16 + s[x] - 'a' +10;
        }
        else return 0;
        x++;
    }
    return val;
}*/
/* This function converts integer into binary */
int intobin(unsigned int dec)
{
    int i=0;
    while(dec>0)
    {
        dec=dec/2;
        i++;
    }
    int rem = i%8;
    int quo = i/8;
    if(rem>0)
    {
        quo++;
        return quo;
    }
    else
    {
        return quo;
    }

}
/* This function defines the dialogbox procedure for filling FCP Parameters of DF */
BOOL CALLBACK DlgProcDF(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
        {
             SetDlgItemText(hwnd,IDC_TAG1,"81");
             SetDlgItemText(hwnd,IDC_TAG2,"82");
             SetDlgItemText(hwnd,IDC_TAG3,"83");
             SetDlgItemText(hwnd,IDC_TAG4,"84");
             SetDlgItemText(hwnd,IDC_TAG5,"85");
             SetDlgItemText(hwnd,IDC_TAG6,"86");
             SetDlgItemText(hwnd,IDC_TAG7,"87");
             SetDlgItemText(hwnd,IDC_TAG8,"8A");
             SetDlgItemText(hwnd,IDC_TAG9,"8B");
             SetDlgItemText(hwnd,IDC_TAG10,"8C");
             SetDlgItemText(hwnd,IDC_TAG11,"8D");
             SetDlgItemText(hwnd,IDC_TAG12,"8E");
             SetDlgItemText(hwnd,IDC_TAG13,"A0");
             SetDlgItemText(hwnd,IDC_TAG14,"A1");
             SetDlgItemText(hwnd,IDC_TAG15,"A2");
             SetDlgItemText(hwnd,IDC_TAG16,"A5");
             SetDlgItemText(hwnd,IDC_TAG17,"AB");
             SetDlgItemText(hwnd,IDC_TAG18,"AC");
             return TRUE;
        }
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_DONE:
            {
                char print2[100];
                memset(print2,0x00,sizeof(print1));
                int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_NAME));
                if(len > 0)
                {
                    // Now we allocate, and get the string into our buffer
                    FILE *fp;
                    char* buf1;
                    char hex[3];
                    memset(hex,0x00,sizeof(hex));
                    char tag[100];
                    memset(tag,0x00,sizeof(tag));
                    char val1[32];
                    memset(val1,0x00,sizeof(val1));
                    char val2[32];
                    memset(val2,0x00,sizeof(val2));
                    char val3[32];
                    memset(val3,0x00,sizeof(val3));
                    char val4[32];
                    memset(val4,0x00,sizeof(val4));
                    char val5[32];
                    memset(val5,0x00,sizeof(val5));
                    char val6[32];
                    memset(val6,0x00,sizeof(val6));
                    char val7[32];
                    memset(val7,0x00,sizeof(val7));
                    char val8[32];
                    memset(val8,0x00,sizeof(val8));
                    char val9[32];
                    memset(val9,0x00,sizeof(val9));
                    char val10[32];
                    memset(val10,0x00,sizeof(val10));
                    char val11[32];
                    memset(val11,0x00,sizeof(val11));
                    char val12[32];
                    memset(val12,0x00,sizeof(val12));
                    char val13[32];
                    memset(val13,0x00,sizeof(val13));
                    char val14[32];
                    memset(val14,0x00,sizeof(val14));
                    char val15[32];
                    memset(val15,0x00,sizeof(val15));
                    char val16[32];
                    memset(val16,0x00,sizeof(val16));
                    char val17[32];
                    memset(val17,0x00,sizeof(val17));
                    char val18[32];
                    memset(val18,0x00,sizeof(val18));
                    char val19[32];
                    memset(val19,0x00,sizeof(val19));
                    char val20[32];
                    memset(val20,0x00,sizeof(val20));
                    int len2[100];
                    memset(len2,0x00,sizeof(len2));
                    memset(tag,0x00,sizeof(tag));
                    buf1 = (char*)GlobalAlloc(GPTR, len + 1);
                    GetDlgItemText(hwnd, IDC_NAME, buf1, len + 1);
                    SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)buf1);
                    sprintf(print2,"%s\\%s_DF.txt",print1,buf1);
                    char *hex2 = ctoh(buf1,len);
                    printf("%s",hex2);
                    SetDlgItemText(hwnd,IDC_VAL4,hex2);
                    free(hex2);
                    fp = fopen(print2,"w");
                    int y;
                    int len1 = GetWindowTextLength(GetDlgItem(hwnd, IDC_TAG1));
                    char* buf2;
                    buf2 = (char*)GlobalAlloc(GPTR,len1+1);
                    GetDlgItemText(hwnd,IDC_TAG1,buf2,len1+1);
                    strcpy(tag,buf2);
                    int len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL1));
                    if(len3>0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL1,val1,len3+1);
                        y = strlen(val1);
                        len2[0] = callen1(y);
                        dhex(len2[0],hex);
                        SetDlgItemInt(hwnd, IDC_LEN1, len2[0], FALSE);
                        printf("%s",hex);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[0],tag[1],hex,val1);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG2,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL2));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL2, val2, len3+1);
                        y = strlen(val2);
                        len2[1] = callen1(y);
                        dhex(len2[1],hex);
                        SetDlgItemInt(hwnd, IDC_LEN2, len2[1], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[2],tag[3],hex,val2);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG3,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL3));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL3, val3, len3+1);
                        y = strlen(val3);
                        len2[2] = callen1(y);
                        dhex(len2[2],hex);
                        SetDlgItemInt(hwnd, IDC_LEN3, len2[2], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[4],tag[5],hex,val3);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG4,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL4));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL4, val4, len3+1);
                        y = strlen(val4);
                        len2[3] = callen1(y);
                        dhex(len2[3],hex);
                        SetDlgItemInt(hwnd, IDC_LEN4, len2[3], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[6],tag[7],hex,val4);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG5,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL5));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL5, val5, len3+1);
                        y = strlen(val5);
                        len2[4] = callen1(y);
                        dhex(len2[4],hex);
                        SetDlgItemInt(hwnd, IDC_LEN5, len2[4], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[8],tag[9],hex,val5);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG6,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL6));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL6, val6, len3+1);
                        y = strlen(val6);
                        len2[5] = callen1(y);
                        dhex(len2[5],hex);
                        SetDlgItemInt(hwnd, IDC_LEN6, len2[5], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[10],tag[11],hex,val6);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG7,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL7));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL7, val7, len3+1);
                        y = strlen(val7);
                        len2[6] = callen1(y);
                        dhex(len2[6],hex);
                        SetDlgItemInt(hwnd, IDC_LEN7, len2[6], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[12],tag[13],hex,val7);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG8,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL8));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL8, val8, len3+1);
                        y = strlen(val8);
                        len2[7] = callen1(y);
                        dhex(len2[7],hex);
                        SetDlgItemInt(hwnd, IDC_LEN8, len2[7], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[14],tag[15],hex,val8);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG9,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL9));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL9, val9, len3+1);
                        y = strlen(val9);
                        len2[8] = callen1(y);
                        dhex(len2[8],hex);
                        SetDlgItemInt(hwnd, IDC_LEN9, len2[8], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[16],tag[17],hex,val9);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG10,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL10));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL10, val10, len3+1);
                        y = strlen(val10);
                        len2[9] = callen1(y);
                        dhex(len2[9],hex);
                        SetDlgItemInt(hwnd, IDC_LEN10, len2[9], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[18],tag[19],hex,val10);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG11,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL11));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL11, val11, len3+1);
                        y = strlen(val11);
                        len2[10] = callen1(y);
                        dhex(len2[10],hex);
                        SetDlgItemInt(hwnd, IDC_LEN11, len2[10], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[20],tag[21],hex,val11);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG12,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL12));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL12, val12, len3+1);
                        y = strlen(val12);
                        len2[11] = callen1(y);
                        dhex(len2[11],hex);
                        SetDlgItemInt(hwnd, IDC_LEN12, len2[11], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[22],tag[23],hex,val12);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG13,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL13));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL13, val13, len3+1);
                        y = strlen(val13);
                        len2[12] = callen1(y);
                        dhex(len2[12],hex);
                        SetDlgItemInt(hwnd, IDC_LEN13, len2[12], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[24],tag[25],hex,val13);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG14,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL14));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL14, val14, len3+1);
                        y = strlen(val14);
                        len2[13] = callen1(y);
                        dhex(len2[13],hex);
                        SetDlgItemInt(hwnd, IDC_LEN14, len2[13], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[26],tag[27],hex,val14);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG15,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL15));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL15, val15, len3+1);
                        y = strlen(val15);
                        len2[14] = callen1(y);
                        dhex(len2[14],hex);
                        SetDlgItemInt(hwnd, IDC_LEN15, len2[14], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[28],tag[29],hex,val15);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG16,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL16));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL16, val16, len3+1);
                        y = strlen(val16);
                        len2[15] = callen1(y);
                        dhex(len2[15],hex);
                        SetDlgItemInt(hwnd, IDC_LEN16, len2[15], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[30],tag[31],hex,val16);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG17,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL17));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL17, val17, len3+1);
                        y = strlen(val17);
                        len2[16] = callen1(y);
                        dhex(len2[16],hex);
                        SetDlgItemInt(hwnd, IDC_LEN17, len2[16], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[32],tag[33],hex,val17);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG18,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL18));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL18, val18, len3+1);
                        y = strlen(val18);
                        len2[17] = callen1(y);
                        dhex(len2[17],hex);
                        SetDlgItemInt(hwnd, IDC_LEN18, len2[17], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[34],tag[35],hex,val18);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG19,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL19));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL19, val19, len3+1);
                        y = strlen(val19);
                        len2[18] = callen1(y);
                        dhex(len2[18],hex);
                        SetDlgItemInt(hwnd, IDC_LEN19, len2[18], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[36],tag[37],hex,val19);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG20,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL20));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL20, val20, len3+1);
                        y = strlen(val20);
                        len2[19] = callen1(y);
                        dhex(len2[19],hex);
                        SetDlgItemInt(hwnd, IDC_LEN20, len2[19], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[38],tag[38],hex,val20);
                        memset(hex,0x00,sizeof(hex));
                    }
                }
                else
                {
                    MessageBox(hwnd, "You didn't enter Name!", "Warning", MB_OK);
                }
            }
            break;
        }
        break;
        case WM_CLOSE:
        {
            EndDialog(hwnd,0);
        }
        default:
            return FALSE;
    }
    return TRUE;
}
/* This function defines the dialogbox procedure for filling FCP Parameters of EF */
BOOL CALLBACK DlgProcEF(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
        {
             SetDlgItemText(hwnd,IDC_TAG1,"80");
             SetDlgItemText(hwnd,IDC_TAG2,"81");
             SetDlgItemText(hwnd,IDC_TAG3,"82");
             SetDlgItemText(hwnd,IDC_TAG4,"83");
             SetDlgItemText(hwnd,IDC_TAG5,"85");
             SetDlgItemText(hwnd,IDC_TAG6,"86");
             SetDlgItemText(hwnd,IDC_TAG7,"88");
             SetDlgItemText(hwnd,IDC_TAG8,"8A");
             SetDlgItemText(hwnd,IDC_TAG9,"8B");
             SetDlgItemText(hwnd,IDC_TAG10,"8C");
             SetDlgItemText(hwnd,IDC_TAG11,"8E");
             SetDlgItemText(hwnd,IDC_TAG12,"A0");
             SetDlgItemText(hwnd,IDC_TAG13,"A1");
             SetDlgItemText(hwnd,IDC_TAG14,"A5");
             SetDlgItemText(hwnd,IDC_TAG15,"AB");
             return TRUE;
        }
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_DONE:
            {
                char print2[100];
                memset(print2,0x00,sizeof(print2));
                int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_NAME));
                if(len > 0)
                {
                        // Now we allocate, and get the string into our buffer
                    FILE *fp;
                    char* buf1;
                    char hex[3];
                    char tag[100];
                    memset(tag,0x00,sizeof(tag));
                    char val1[32];
                    memset(val1,0x00,sizeof(val1));
                    char val2[32];
                    memset(val2,0x00,sizeof(val2));
                    char val3[32];
                    memset(val3,0x00,sizeof(val3));
                    char val4[32];
                    memset(val4,0x00,sizeof(val4));
                    char val5[32];
                    memset(val5,0x00,sizeof(val5));
                    char val6[32];
                    memset(val6,0x00,sizeof(val6));
                    char val7[32];
                    memset(val7,0x00,sizeof(val7));
                    char val8[32];
                    memset(val8,0x00,sizeof(val8));
                    char val9[32];
                    memset(val9,0x00,sizeof(val9));
                    char val10[32];
                    memset(val10,0x00,sizeof(val10));
                    char val11[32];
                    memset(val11,0x00,sizeof(val11));
                    char val12[32];
                    memset(val12,0x00,sizeof(val12));
                    char val13[32];
                    memset(val13,0x00,sizeof(val13));
                    char val14[32];
                    memset(val14,0x00,sizeof(val14));
                    char val15[32];
                    memset(val15,0x00,sizeof(val15));
                    char val16[32];
                    memset(val16,0x00,sizeof(val16));
                    char val17[32];
                    memset(val17,0x00,sizeof(val17));
                    char val18[32];
                    memset(val18,0x00,sizeof(val18));
                    char val19[32];
                    memset(val19,0x00,sizeof(val19));
                    char val20[32];
                    memset(val20,0x00,sizeof(val20));
                    int len2[100];
                    memset(len2,0x00,sizeof(len2));
                    memset(tag,0x00,sizeof(tag));
                    buf1 = (char*)GlobalAlloc(GPTR, len + 1);
                    GetDlgItemText(hwnd, IDC_NAME, buf1, len + 1);
                    SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)buf1);
                    sprintf(print2,"%s\\%s_EF.txt",print,buf1);
                    fp = fopen(print2,"w");
                    int y;
                    int len1 = GetWindowTextLength(GetDlgItem(hwnd, IDC_TAG1));
                    char* buf2;
                    buf2 = (char*)GlobalAlloc(GPTR,len1+1);
                    GetDlgItemText(hwnd,IDC_TAG1,buf2,len1+1);
                    strcpy(tag,buf2);
                    int len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL1));
                    if(len3>0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL1,val1,len3+1);
                        y = strlen(val1);
                        len2[0] = callen1(y);
                        dhex(len2[0],hex);
                        SetDlgItemInt(hwnd, IDC_LEN1, len2[0], FALSE);
                        printf("%s",hex);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[0],tag[1],hex,val1);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG2,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL2));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL2, val2, len3+1);
                        y = strlen(val2);
                        len2[1] = callen1(y);
                        dhex(len2[1],hex);
                        SetDlgItemInt(hwnd, IDC_LEN2, len2[1], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[2],tag[3],hex,val2);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG3,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL3));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL3, val3, len3+1);
                        y = strlen(val3);
                        len2[2] = callen1(y);
                        dhex(len2[2],hex);
                        SetDlgItemInt(hwnd, IDC_LEN3, len2[2], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[4],tag[5],hex,val3);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG4,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL4));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL4, val4, len3+1);
                        y = strlen(val4);
                        len2[3] = callen1(y);
                        dhex(len2[3],hex);
                        SetDlgItemInt(hwnd, IDC_LEN4, len2[3], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[6],tag[7],hex,val4);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG5,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL5));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL5, val5, len3+1);
                        y = strlen(val5);
                        len2[4] = callen1(y);
                        dhex(len2[4],hex);
                        SetDlgItemInt(hwnd, IDC_LEN5, len2[4], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[8],tag[9],hex,val5);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG6,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL6));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL6, val6, len3+1);
                        y = strlen(val6);
                        len2[5] = callen1(y);
                        dhex(len2[5],hex);
                        SetDlgItemInt(hwnd, IDC_LEN6, len2[5], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[10],tag[11],hex,val6);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG7,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL7));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL7, val7, len3+1);
                        y = strlen(val7);
                        len2[6] = callen1(y);
                        dhex(len2[6],hex);
                        SetDlgItemInt(hwnd, IDC_LEN7, len2[6], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[12],tag[13],hex,val7);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG8,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL8));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL8, val8, len3+1);
                        y = strlen(val8);
                        len2[7] = callen1(y);
                        dhex(len2[7],hex);
                        SetDlgItemInt(hwnd, IDC_LEN8, len2[7], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[14],tag[15],hex,val8);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG9,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL9));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL9, val9, len3+1);
                        y = strlen(val9);
                        len2[8] = callen1(y);
                        dhex(len2[8],hex);
                        SetDlgItemInt(hwnd, IDC_LEN9, len2[8], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[16],tag[17],hex,val9);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG10,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL10));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL10, val10, len3+1);
                        y = strlen(val10);
                        len2[9] = callen1(y);
                        dhex(len2[9],hex);
                        SetDlgItemInt(hwnd, IDC_LEN10, len2[9], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[18],tag[19],hex,val10);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG11,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL11));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL11, val11, len3+1);
                        y = strlen(val11);
                        len2[10] = callen1(y);
                        dhex(len2[10],hex);
                        SetDlgItemInt(hwnd, IDC_LEN11, len2[10], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[20],tag[21],hex,val11);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG12,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL12));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL12, val12, len3+1);
                        y = strlen(val12);
                        len2[11] = callen1(y);
                        dhex(len2[11],hex);
                        SetDlgItemInt(hwnd, IDC_LEN12, len2[11], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[22],tag[23],hex,val12);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG13,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL13));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL13, val13, len3+1);
                        y = strlen(val13);
                        len2[12] = callen1(y);
                        dhex(len2[12],hex);
                        SetDlgItemInt(hwnd, IDC_LEN13, len2[12], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[24],tag[25],hex,val13);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG14,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL14));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL14, val14, len3+1);
                        y = strlen(val14);
                        len2[13] = callen1(y);
                        dhex(len2[13],hex);
                        SetDlgItemInt(hwnd, IDC_LEN14, len2[13], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[26],tag[27],hex,val14);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG15,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL15));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL15, val15, len3+1);
                        y = strlen(val15);
                        len2[14] = callen1(y);
                        dhex(len2[14],hex);
                        SetDlgItemInt(hwnd, IDC_LEN15, len2[14], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[28],tag[29],hex,val15);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG16,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL16));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL16, val16, len3+1);
                        y = strlen(val16);
                        len2[15] = callen1(y);
                        dhex(len2[15],hex);
                        SetDlgItemInt(hwnd, IDC_LEN16, len2[15], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[30],tag[31],hex,val16);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG17,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL17));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL17, val17, len3+1);
                        y = strlen(val17);
                        len2[16] = callen1(y);
                        dhex(len2[16],hex);
                        SetDlgItemInt(hwnd, IDC_LEN17, len2[16], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[32],tag[33],hex,val17);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG18,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL18));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL18, val18, len3+1);
                        y = strlen(val18);
                        len2[17] = callen1(y);
                        dhex(len2[17],hex);
                        SetDlgItemInt(hwnd, IDC_LEN18, len2[17], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[34],tag[35],hex,val18);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG19,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL19));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL19, val19, len3+1);
                        y = strlen(val19);
                        len2[18] = callen1(y);
                        dhex(len2[18],hex);
                        SetDlgItemInt(hwnd, IDC_LEN19, len2[18], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[36],tag[37],hex,val19);
                        memset(hex,0x00,sizeof(hex));
                    }
                    GetDlgItemText(hwnd,IDC_TAG20,buf2,len1+1);
                    strcat(tag,buf2);
                    len3 = GetWindowTextLength(GetDlgItem(hwnd, IDC_VAL20));
                    if(len3!=0)
                    {
                        GetDlgItemText(hwnd, IDC_VAL20, val20, len3+1);
                        y = strlen(val20);
                        len2[19] = callen1(y);
                        dhex(len2[19],hex);
                        SetDlgItemInt(hwnd, IDC_LEN20, len2[19], FALSE);
                        fprintf(fp, "%c%c\t%s\t%s\n",tag[38],tag[38],hex,val20);
                        memset(hex,0x00,sizeof(hex));
                    }
                }
                else
                {
                    MessageBox(hwnd, "You didn't enter Name!", "Warning", MB_OK);
                }

            }
            break;
        }
        break;
        case WM_CLOSE:
        {
            EndDialog(hwnd,0);
        }
        default:
            return FALSE;
    }
    return TRUE;
}
/* This is a dialogbox procedure for creating a simple modal dialog box */
BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDOK:
                EndDialog(hwnd, IDOK);
            break;
            case IDCANCEL:
                EndDialog(hwnd, IDCANCEL);
            break;
        }
        break;
        default:
            return FALSE;
    }
    return TRUE;
}
/* This function is a dialogbox procedure for dialog creating files */
BOOL CALLBACK DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
            return TRUE;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_EF:
            {
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_FCPEF), NULL, DlgProcEF);
            }
            break;
            case IDC_DF:
            {
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_FCPDF), NULL, DlgProcDF);
            }
            break;
        }
        break;
        case WM_CLOSE:
            EndDialog(hwnd,0);
        break;
        default:
            return FALSE;
    }
    return TRUE;
}
BOOL CALLBACK ToolDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_PRESS:
                MessageBox(hwnd, "Hi!", "This is a message",MB_OK | MB_ICONEXCLAMATION);
            break;
            case IDC_OTHER:
                MessageBox(hwnd, "Bye!", "This is also a message",MB_OK | MB_ICONEXCLAMATION);
            break;
        }
        break;
        default:
            return FALSE;
    }
    return TRUE;
}
/* This Function is the dialogbox procedure for loading files in a profile */
BOOL CALLBACK DlgProc5(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
        {
            ODIR(hwnd,print1);
            return TRUE;
        }
        break;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_OPEN:
            {
                char temp[200];
                char apdu[200];
                memset(temp,0x00,sizeof(temp));
                memset(apdu,0x00,sizeof(apdu));
                strcpy(apdu,"00E00000");
                char tag[20],length[20],value[20];
                memset(tag,0x00,sizeof(tag));
                memset(value,0x00,sizeof(value));
                memset(length,0x00,sizeof(length));
                char print2[100];
                // When the user clicks the Open button, we first get the name of the profile he has selected.
                HWND hList = GetDlgItem(hwnd, IDC_LIST);
                int count = SendMessage(hList, LB_GETCURSEL, 0, 0);
                char* buf = (char*)SendMessage(hList, LB_GETITEMDATA,count,0);
                memset(print2,0x00,sizeof(print2));
                sprintf(print2,"%s%s",print1,buf);
                FILE* fp;
                fp = fopen(print2,"r");
                if(fp==0)
                {
                    printf("couldn't read file");
                }
                else
                {
                    int i=0;
                    int x;
                    while((x= fgetc(fp))!=EOF)
                    {
                        if((x==9)|(x=='\n'))
                            continue;
                        else
                        {
                            temp[i] = x;
                            i++;
                        }
                    }
                    i = strlen(temp)/2;
                    int j = i+2;
                    char len[3];
                    dhex(j,len);
                    strcat(apdu,len);
                    dhex(i,len);
                    strcat(apdu,"62");
                    strcat(apdu,len);
                    strcat(apdu,temp);
                    printf("%s",apdu);
                    fclose(fp);
                }

                /*if(count != LB_ERR)
                {
                    if(count != 0)
                    {
                        // And then allocate room to store the list of selected items.

                        int i;
                        int *buf = (int*)GlobalAlloc(GPTR, sizeof(int) * count);
                        SendMessage(hList, LB_GETSELITEMS, (WPARAM)count, (LPARAM)buf);

                        // Now we loop through the list and remove each item that was
                        // selected.

                        // WARNING!!!
                        // We loop backwards, because if we removed items
                        // from top to bottom, it would change the indexes of the other
                        // items!!!

                        for(i = count - 1; i >= 0; i--)
                        {
                            SendMessage(hList, LB_DELETESTRING, (WPARAM)buf[i], 0);
                        }

                        GlobalFree(buf);
                    }
                    else
                    {
                        MessageBox(hwnd, "No items selected.", "Warning", MB_OK);
                    }
                }
                else
                {
                    MessageBox(hwnd, "Error counting items :(", "Warning", MB_OK);
                }*/
            }
            break;
            case IDC_CLEAR:
                SendDlgItemMessage(hwnd, IDC_LIST, LB_RESETCONTENT, 0, 0);
            break;
            case IDC_LIST:
                switch(HIWORD(wParam))
                {
                    case LBN_SELCHANGE:
                    {
                        // Get the number of items selected.

                        HWND hList = GetDlgItem(hwnd, IDC_LIST);
                        int count = SendMessage(hList, LB_GETSELCOUNT, 0, 0);
                        if(count != LB_ERR)
                        {
                            // We only want to continue if one and only one item is
                            // selected.

                            if(count == 1)
                            {
                                // Since we know ahead of time we're only getting one
                                // index, there's no need to allocate an array.

                                int index;
                                int err = SendMessage(hList, LB_GETSELITEMS, (WPARAM)1, (LPARAM)&index);
                                if(err != LB_ERR)
                                {
                                    // Get the data we associated with the item above
                                    // (the number of times it was added)

                                    int data = SendMessage(hList, LB_GETITEMDATA, (WPARAM)index, 0);

                                    SetDlgItemInt(hwnd, IDC_SHOWCOUNT, data, FALSE);
                                }
                                else
                                {
                                    MessageBox(hwnd, "Error getting selected item :(", "Warning", MB_OK);
                                }
                            }
                            else
                            {
                                // No items selected, or more than one
                                // Either way, we aren't going to process this.
                                SetDlgItemText(hwnd, IDC_SHOWCOUNT, "-");
                            }
                        }
                        else
                        {
                            MessageBox(hwnd, "Error counting items :(", "Warning", MB_OK);
                        }
                    }
                    break;
                }
                break;
        }
        break;
    case WM_CLOSE:
        EndDialog(hwnd, 0);
    break;
    default:
        return FALSE;
}
return TRUE;
}
/* This function is a dialogbox procedure for loading profiles */
BOOL CALLBACK DlgProc3(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:
        {
            ODIR(hwnd,print);
            return TRUE;
        }
        break;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_OPEN:
            {
                // When the user clicks the Open button, we first get the name of the profile he has selected.
                HWND hList = GetDlgItem(hwnd, IDC_LIST);
                int count = SendMessage(hList, LB_GETCURSEL, 0, 0);
                char* buf = (char*)SendMessage(hList, LB_GETITEMDATA,count,0);
                memset(print1,0x00,sizeof(print1));
                sprintf(print1,"%s%s/",print,buf);
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOADPF), NULL, DlgProc5);
            }
            break;
            case IDC_LIST:
            switch(HIWORD(wParam))
            {
                case LBN_SELCHANGE:
                {
                    // Get the number of items selected.

                    HWND hList = GetDlgItem(hwnd, IDC_LIST);
                    int count = SendMessage(hList, LB_GETSELCOUNT, 0, 0);
                    if(count != LB_ERR)
                    {
                        // We only want to continue if one and only one item is selected.
                        if(count == 1)
                        {
                            // Since we know ahead of time we're only getting one index, there's no need to allocate an array.
                            int index;
                            int err = SendMessage(hList, LB_GETSELITEMS, (WPARAM)1, (LPARAM)&index);
                            if(err != LB_ERR)
                            {
                                // Get the data we associated with the item above (the number of times it was added)
                                int data = SendMessage(hList, LB_GETITEMDATA, (WPARAM)index, 0);
                                SetDlgItemInt(hwnd, IDC_SHOWCOUNT, data, FALSE);
                            }
                            else
                            {
                                MessageBox(hwnd, "Error getting selected item :(", "Warning", MB_OK);
                            }
                        }
                        else
                        {
                            // No items selected, or more than one either way, we aren't going to process this.
                            SetDlgItemText(hwnd, IDC_SHOWCOUNT, "-");
                        }
                    }
                    else
                    {
                        MessageBox(hwnd, "Error counting items :(", "Warning", MB_OK);
                    }
                }
                break;
            }
            break;
        }
        break;
        case WM_CLOSE:
            EndDialog(hwnd, 0);
        break;
        default:
            return FALSE;
    }
    return TRUE;
}
/*This is the function for dialogbox procedure after clicking create button */
BOOL CALLBACK DlgProc1(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_INITDIALOG:// This is where we set up the dialog box, and initialise any default values
        SetDlgItemText(hwnd, IDC_TEXT, "*Enter the Profile name*");
        break;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDC_NEXT:
            {
                // When somebody clicks the Next button, a folder with entered name is created
                int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_TEXT));//getting length of the text entered
                if(len > 0)
                {
                    // Now we allocate, and get the string into our buffer
                    char* buf;
                    buf = (char*)GlobalAlloc(GPTR, len + 1);
                    GetDlgItemText(hwnd, IDC_TEXT, buf, len + 1);
                    strcpy(print1,print);
                    strcat(print1,buf);
                    mkdir(print1);
                    EndDialog(hwnd,0);
                    HINSTANCE hInstance = GetModuleHandle(NULL);
                    DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
                }
                else
                {
                    MessageBox(hwnd, "You didn't enter anything!", "Warning", MB_OK);
                }
            }
            break;
            case IDCANCEL:
                EndDialog(hwnd,0);
            break;
        }
        break;
        case WM_CLOSE:
            EndDialog(hwnd, 0);
        break;
        default:
        return FALSE;
    }
    return TRUE;
}
/*  This function is called by the Windows function DispatchMessage()  */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_CREATE:
        {
            memset(print,0x00,sizeof(print));
            strcpy(print,"C:\\Users\\Akshay\\Desktop\\codin application\\Smart\\Profiles\\");
            HFONT hfDefault;
            HWND hEdit;
            hEdit = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Load",WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE,
                                   100, 60, 60, 35, hwnd, (HMENU)ID_LOAD, GetModuleHandle(NULL), NULL);
            if(hEdit == NULL)
                MessageBox(hwnd, "Could not create button", "Error", MB_OK | MB_ICONERROR);

            hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
            SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
            hEdit = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Create",WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE,
                                   100, 100, 60, 35, hwnd, (HMENU)ID_CREATE, GetModuleHandle(NULL), NULL);
            if(hEdit == NULL)
                MessageBox(hwnd, "Could not create button", "Error", MB_OK | MB_ICONERROR);

            hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
            SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
            hEdit = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Connect",WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE,
                                   100, 100, 60, 35, hwnd, (HMENU)ID_CONNECT, GetModuleHandle(NULL), NULL);
            if(hEdit == NULL)
                MessageBox(hwnd, "Could not create button", "Error", MB_OK | MB_ICONERROR);

            hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
            SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
        }
        break;
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case ID_CREATE:
            {
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_CREATE), NULL, DlgProc1);
            }
            break;
            case ID_LOAD:
            {
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOAD), NULL, DlgProc3);
            }
            break;
            case ID_CONNECT:
            {
                SCARDCONTEXT    hSC;
                LONG            lReturn;
                // Establish the context.
                lReturn = SCardEstablishContext(SCARD_SCOPE_USER,
                                                NULL,
                                                NULL,
                                                &hSC);
                if ( SCARD_S_SUCCESS != lReturn )
                    printf("Failed SCardEstablishContext\n");
                else
                {
                    SCARDHANDLE     hCardHandle;
                    LONG            lReturn1;
                    DWORD           dwAP;

                    lReturn1 = SCardConnect( hSC,
                                            (LPCTSTR)"Rainbow Technologies SCR3531 0",
                                            SCARD_SHARE_SHARED,
                                            SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
                                            &hCardHandle,
                                            &dwAP );
                    if ( SCARD_S_SUCCESS != lReturn1 )
                    {
                        printf("Failed SCardConnect\n");
                        exit(1);  // Or other appropriate action.
                    }

                    // Use the connection.
                    // Display the active protocol.
                    switch ( dwAP )
                    {
                        case SCARD_PROTOCOL_T0:
                            printf("Active protocol T0\n");
                            break;

                        case SCARD_PROTOCOL_T1:
                            printf("Active protocol T1\n");
                            break;

                        case SCARD_PROTOCOL_UNDEFINED:
                        default:
                            printf("Active protocol unnegotiated or unknown\n");
                            break;
                    }
                }

            }
            case ID_PROP:
            {
                char szFileName[MAX_PATH];
                HINSTANCE hInstance = GetModuleHandle(NULL);

                GetModuleFileName(hInstance, szFileName, MAX_PATH);
                MessageBox(hwnd, szFileName, "This program is:", MB_OK | MB_ICONINFORMATION);
            }
            break;
            case ID_FILE_EXIT:
                PostMessage(hwnd, WM_CLOSE, 0, 0);
            break;
            case ID_DIALOG_SHOW:
                ShowWindow(g_hToolbar, SW_SHOW);
            break;
            case ID_HELP_ABOUT:
            {
                DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
            }
            break;
            case ID_PROFILE:
            {
                HINSTANCE hInstance = GetModuleHandle(NULL);
                DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc1);
            }
            case ID_DIALOG_HIDE:
                ShowWindow(g_hToolbar, SW_HIDE);
            break;
        }
        break;
        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            DestroyWindow(g_hToolbar);
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
        default:                      /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style         = 0;
    wc.lpfnWndProc   = WindowProcedure;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MYMENU);
    wc.lpszClassName = szClassName;
    wc.hIconSm       = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON,32,32,0);

    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }
    hwnd = CreateWindowEx(WS_EX_WINDOWEDGE,szClassName,"SMART CARD BURNER",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,
                          CW_USEDEFAULT, 240, 220,NULL, NULL, hInstance, NULL);
    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!",MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        if(!IsDialogMessage(g_hToolbar, &Msg))
        {
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
    }
    return Msg.wParam;
    }

推荐答案



这篇关于未定义的函数引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-13 07:45