未定义的函数引用 [英] undefined reference to function

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

问题描述

我有我的资源标头和资源文件。但它显示未定义的引用'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;
    }

推荐答案

First of all, please see my comment to the question (which is not a question).



Well, you are trying to call a function which you did not define, so what to ask about? You did not show even the function signature/prototype anywhere. Call only the functions which are defined and accessible in the context where you call it…



—SA
First of all, please see my comment to the question (which is not a question).

Well, you are trying to call a function which you did not define, so what to ask about? You did not show even the function signature/prototype anywhere. Call only the functions which are defined and accessible in the context where you call it…

—SA


That’s is a linker error. You correctly included the header file (winscard.h) but you missed to link with the proper library file (winscard.lib, I suppose).
That's is a linker error. You correctly included the header file (winscard.h) but you missed to link with the proper library file (winscard.lib, I suppose).


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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆