home *** CD-ROM | disk | FTP | other *** search
- #include "barcode.h"
-
- char cBuff[200];
- char szappname[] = "barcode 1.0";
- HINSTANCE hInst;
-
- int Bar (HDC, BOOL, int, HPEN, HBRUSH, int);
- void BarCode (HDC, char *, int, int);
- void TextToControls (HWND, char *, int);
- void PrintBarCode (HWND, char *, int);
- void PaintBarCode (HWND);
- int ControlsToText (HWND, char *);
- HWND GetDlgButtonChecked (HWND, int, int);
-
- /****************************************************************************
-
- FUNCTION : WinMain
-
- RETURN :
- COMMENTS : Main loop
-
- ****************************************************************************/
-
- int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- DLGPROC DlgProc;
-
- hInst = hInstance;
-
- if (!hPrevInstance) {
- DlgProc = (DLGPROC)MakeProcInstance ((FARPROC)WndProc, hInst);
- DialogBox (hInst, MAKEINTRESOURCE (IDD_DIALOG1), (HWND)NULL, DlgProc);
- FreeProcInstance ((FARPROC)DlgProc);
- return 0;
- }
- else
- return -1;
- }
-
- /****************************************************************************
-
- FUNCTION : WndProc
-
- RETURN :
- COMMENTS : Window Proc for the main window
-
- ****************************************************************************/
- BOOL CALLBACK WndProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
-
- int slen, i;
- static char cString[20];
- char cComp[16][5] = { "+4.0","+3.5","+3.0","+2.5","+2.0","+1.5","+1.0","+0.5","0",
- "-0.5","-1.0","-1.5","-2.0","-2.5","-3.0","-3.5"};
- char cSpeed[35][7] = { "30\"", "20\"", "15\"", "10\"", "8\"", "6\"", "4\"", "3\"",
- "2\"", "1.5\"", "1\"", "0.7\"", "1/2", "1/3", "1/4", "1/6",
- "1/8", "1/10", "1/15", "1/20", "1/30", "1/45", "1/60", "1/90",
- "1/125", "1/180", "1/250", "1/350", "1/500", "1/750", "1/1000",
- "1/1500", "1/2000", "1/3000", "1/4000"};
- char cAp[11][6] = { "f/1.0", "f/1.4", "f/2.0", "f/2.8", "f/4.0", "f/5.6", "f/8.0",
- "f/11", "f/16", "f/22", "f/32"};
-
- switch (uMsg) {
-
- case WM_INITDIALOG:
- for (i = 0; i < 16; i++){
- ComboBox_AddString (GetDlgItem (hWnd, IDC_COMBO1), cComp[i]);
- ComboBox_AddString (GetDlgItem (hWnd, IDC_COMBO2), cComp[i]);
- }
- for (i = 0; i < 35; i++)
- ComboBox_AddString (GetDlgItem (hWnd, IDC_COMBO3), cSpeed[i]);
- for (i = 0; i < 11; i++)
- ComboBox_AddString (GetDlgItem (hWnd, IDC_COMBO4), cAp[i]);
-
- lstrcpy ((LPSTR)cString, "00304000070300");
- slen = 14;
- SetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString);
- TextToControls (hWnd, cString, slen);
- PaintBarCode (hWnd);
- return TRUE;
-
- case WM_PAINT:
- PaintBarCode (hWnd);
- return FALSE;
-
- case WM_COMMAND:
- switch (GET_WM_COMMAND_ID (wParam, lParam)){
-
- case IDC_EDIT2:
- if (GET_WM_COMMAND_CMD (wParam, lParam) == EN_CHANGE){
- GetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString, sizeof (cString));
- slen = lstrlen (cString);
- if (slen & 1){
- for (i = slen; i > 0; i--)
- cString[i] = cString[i-1];
- cString[0] = '0';
- cString [slen+1] = 0;
- slen++;
- }
- TextToControls (hWnd, cString, slen);
- PaintBarCode (hWnd);
- }
- return TRUE;
-
- case IDC_EDIT1:
- if (GET_WM_COMMAND_CMD (wParam, lParam) != EN_KILLFOCUS)
- return FALSE;
-
- case IDC_RADIO1:
- case IDC_RADIO2:
- case IDC_RADIO3:
- case IDC_RADIO4:
- case IDC_RADIO5:
- case IDC_RADIO6:
- case IDC_RADIO7:
- case IDC_RADIO8:
- case IDC_RADIO11:
- case IDC_RADIO12:
- case IDC_RADIO13:
- case IDC_RADIO14:
- case IDC_RADIO15:
- case IDC_RADIO16:
- case IDC_RADIO17:
- case IDC_CHECK1:
- slen = ControlsToText (hWnd, cString);
- if (slen){
- SetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString);
- PaintBarCode (hWnd);
- }
- return FALSE;
-
- case IDC_COMBO1:
- case IDC_COMBO2:
- case IDC_COMBO3:
- case IDC_COMBO4:
- if (GET_WM_COMMAND_CMD (wParam, lParam) == LBN_SELCHANGE){
- slen = ControlsToText (hWnd, cString);
- if (slen){
- SetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString);
- PaintBarCode (hWnd);
- }
- }
- return TRUE;
-
- case IDC_BUTTON2:
- slen = ControlsToText (hWnd, cString);
- if (slen){
- SetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString);
- PrintBarCode(hWnd, cString, slen);
- }
- return TRUE;
-
- case IDCANCEL:
- EndDialog (hWnd, 0);
- return TRUE;
- }
- break;
-
- case WM_CLOSE :
- EndDialog (hWnd, 0);
- return TRUE;
-
- case WM_DESTROY :
- return TRUE;
-
- }
- return FALSE;
- }
-
- void PaintBarCode (HWND hWnd)
- {
- HDC hDC;
- char cString[50];
- int slen, i;
- RECT Rect;
-
- hDC = GetDC (GetDlgItem (hWnd, IDC_STATIC1));
-
- GetClientRect (GetDlgItem (hWnd, IDC_STATIC1), &Rect);
- Rectangle (hDC, Rect.left, Rect.top, Rect.right, Rect.bottom);
-
- GetWindowText (GetDlgItem (hWnd, IDC_EDIT2), (LPSTR)cString, sizeof (cString));
- slen = lstrlen (cString);
- if (slen & 1){
- for (i = slen; i > 0; i--)
- cString[i] = cString[i-1];
- cString[0] = '0';
- cString [slen+1] = 0;
- slen++;
- }
- if (slen){
- SetTextColor (hDC, GetSysColor (COLOR_WINDOWTEXT));
- SetBkColor (hDC, GetSysColor (COLOR_WINDOW));
- BarCode (hDC, cString, slen, 1);
- }
- ReleaseDC (GetDlgItem (hWnd, IDC_STATIC1), hDC);
-
- return;
- }
-
-
- void PrintBarCode (HWND hwnd, char *cString, int slen)
- {
- #define LEN 50
-
- PRINTDLG pd;
- DOCINFO di;
- char lpszDocName[] = "BARCODE";
- int nRes, nFact;
-
- memset(&pd, 0, sizeof(PRINTDLG));
- di.cbSize = sizeof (DOCINFO);
- di.lpszDocName = lpszDocName;
- di.lpszOutput = NULL;
-
- pd.lStructSize = sizeof(PRINTDLG);
- pd.hwndOwner = hwnd;
- pd.Flags = PD_RETURNDC;
-
- if (PrintDlg(&pd) != 0) {
- StartDoc (pd.hDC, &di);
- StartPage (pd.hDC);
-
- nRes = GetDeviceCaps (pd.hDC, LOGPIXELSX);
- nFact = ((LEN / 25) * nRes) / ((14 + 1) * 9);
- BarCode (pd.hDC, cString, slen, nFact);
- if (IsDlgButtonChecked (hwnd, IDC_CHECK3)){
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC11), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 10, cBuff, nRes);
- TextOut (pd.hDC, 800, 50 * nFact + 10, cString, slen);
- }
- if (IsDlgButtonChecked (hwnd, IDC_CHECK2)){
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC2), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 60, cBuff, nRes);
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_EDIT1), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 60, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC3), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 110, cBuff, nRes);
- nRes = GetWindowText (GetDlgButtonChecked (hwnd, IDC_RADIO1, IDC_RADIO4), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 110, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC4), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 160, cBuff, nRes);
- nRes = GetWindowText (GetDlgButtonChecked (hwnd, IDC_RADIO5, IDC_RADIO8), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 160, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC5), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 210, cBuff, nRes);
- nRes = GetWindowText (GetDlgButtonChecked (hwnd, IDC_RADIO11, IDC_RADIO14), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 210, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC6), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 260, cBuff, nRes);
- nRes = GetWindowText (GetDlgButtonChecked (hwnd, IDC_RADIO15, IDC_RADIO17), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 260, cBuff, nRes);
-
- if (IsDlgButtonChecked (hwnd, IDC_CHECK1)) {
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_CHECK1), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 310, cBuff, nRes);
- }
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC7), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 360, cBuff, nRes);
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_COMBO1), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 360, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC8), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 410, cBuff, nRes);
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_COMBO2), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 410, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC9), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 460, cBuff, nRes);
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_COMBO3), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 460, cBuff, nRes);
-
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_STATIC10), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 10, 50 * nFact + 510, cBuff, nRes);
- nRes = GetWindowText (GetDlgItem (hwnd, IDC_COMBO4), cBuff, sizeof (cBuff));
- TextOut (pd.hDC, 800, 50 * nFact + 510, cBuff, nRes);
-
- }
-
- EndPage (pd.hDC);
- EndDoc (pd.hDC);
- DeleteDC(pd.hDC);
- if (pd.hDevMode != NULL)
- GlobalFree(pd.hDevMode);
- if (pd.hDevNames != NULL)
- GlobalFree(pd.hDevNames);
- }
-
- return;
- }
-
- void BarCode (HDC hDC, char *cString, int slen, int nFact)
- {
- char T[10] = {0x0c, 0x11, 0x12, 0x03, 0x14, 0x05, 0x06, 0x18, 0x09, 0x0a};
- char cMask;
- int index, i, j;
- HPEN hPen, hNoPen;
- HBRUSH hBrush, hNoBrush;
-
- index = 10;
- hPen = GetStockObject(BLACK_PEN);
- hNoPen = GetStockObject(WHITE_PEN);
- hBrush = GetStockObject (BLACK_BRUSH);
- hNoBrush = GetStockObject (WHITE_BRUSH);
- index = Bar (hDC, 0, index, hPen, hBrush, nFact);
- index = Bar (hDC, 0, index, hNoPen, hNoBrush, nFact);
- index = Bar (hDC, 0, index, hPen, hBrush, nFact);
- index = Bar (hDC, 0, index, hNoPen, hNoBrush, nFact);
-
- for (i = 0; i < (slen / 2); i++){
- cMask = 0x01;
- for (j = 0; j < 5; j++){
- index = Bar (hDC, (T[cString[i*2] - '0'] & cMask), index, hPen, hBrush, nFact);
- index = Bar (hDC, (T[cString[i*2+1] - '0'] & cMask), index, hNoPen, hNoBrush, nFact);
- cMask = (char)(cMask << 1);
- }
- }
-
- index = Bar (hDC, 1, index, hPen, hBrush, nFact);
- index = Bar (hDC, 0, index, hNoPen, hNoBrush, nFact);
- index = Bar (hDC, 0, index, hPen, hBrush, nFact);
-
- return;
- }
-
- int Bar (HDC hDC, BOOL bWide, int index, HPEN hPen, HBRUSH hBrush, int nFact)
- {
- int idx, nSize;
- HPEN hOldPen;
- HBRUSH hOldBrush;
-
- idx = index;
- hOldPen = SelectObject (hDC, hPen);
- hOldBrush = SelectObject (hDC, hBrush);
-
- if (bWide)
- nSize = WIDE * nFact;
- else
- nSize = NARROW * nFact;
-
- idx += nSize;
- Rectangle (hDC, index, 2 * nFact, index + nSize, 50 * nFact);
-
- SelectObject (hDC, hOldPen);
- SelectObject (hDC, hOldBrush);
-
- return idx;
- }
-
-
- void TextToControls (HWND hDlg, char *cString, int slen)
- {
- BOOL b4Even, b5Even;
- int nComp;
- char cNb[3];
-
- /* AE MODE */
- switch (cString[1] - '0'){
- case 0:
- CheckRadioButton (hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1);
- break;
-
- case 1:
- CheckRadioButton (hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO2);
- break;
-
- case 2:
- CheckRadioButton (hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO3);
- break;
-
- case 4:
- CheckRadioButton (hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO4);
- break;
- }
-
- /* WINDING */
- if (cString[2] >= '4')
- Button_SetCheck (GetDlgItem (hDlg, IDC_CHECK1), TRUE);
- else
- Button_SetCheck (GetDlgItem (hDlg, IDC_CHECK1), FALSE);
-
- /* AF MODE */
- switch (cString[2] - '0'){
- case 0:
- case 4:
- CheckRadioButton (hDlg, IDC_RADIO5, IDC_RADIO8, IDC_RADIO5);
- break;
-
- case 1:
- case 5:
- CheckRadioButton (hDlg, IDC_RADIO5, IDC_RADIO8, IDC_RADIO6);
- break;
-
- case 2:
- case 6:
- CheckRadioButton (hDlg, IDC_RADIO5, IDC_RADIO8, IDC_RADIO7);
- break;
-
- case 3:
- case 7:
- CheckRadioButton (hDlg, IDC_RADIO5, IDC_RADIO8, IDC_RADIO8);
- break;
- }
-
- /* METERING MODE */
- b4Even = !((cString[3] - '0') & 0x01);
-
- switch (cString[3] - '0'){
- case 0:
- case 1:
- CheckRadioButton (hDlg, IDC_RADIO11, IDC_RADIO14, IDC_RADIO11);
- break;
-
- case 2:
- case 3:
- CheckRadioButton (hDlg, IDC_RADIO11, IDC_RADIO14, IDC_RADIO12);
- break;
-
- case 4:
- case 5:
- CheckRadioButton (hDlg, IDC_RADIO11, IDC_RADIO14, IDC_RADIO13);
- break;
-
- case 6:
- case 7:
- CheckRadioButton (hDlg, IDC_RADIO11, IDC_RADIO14, IDC_RADIO14);
- break;
- }
-
- /* FLASH MODE */
- b5Even = !((cString[4] - '0') & 0x01);
-
- switch (cString[4] - '0'){
- case 0:
- case 1:
- CheckRadioButton (hDlg, IDC_RADIO15, IDC_RADIO17, IDC_RADIO15);
- break;
-
- case 2:
- case 3:
- CheckRadioButton (hDlg, IDC_RADIO15, IDC_RADIO17, IDC_RADIO16);
- break;
-
- case 4:
- case 5:
- CheckRadioButton (hDlg, IDC_RADIO15, IDC_RADIO17, IDC_RADIO17);
- break;
-
- }
- cNb[0] = cString[5];
- cNb[1] = cString[6];
- cNb[2] = 0;
- Edit_SetText (GetDlgItem (hDlg, IDC_EDIT1), cNb);
-
- nComp = cString[7] - '0';
- if (b4Even)
- nComp += 8;
- ComboBox_SetCurSel (GetDlgItem (hDlg, IDC_COMBO1), nComp);
-
- nComp = cString[8] - '0';
- if (b5Even)
- nComp += 8;
- ComboBox_SetCurSel (GetDlgItem (hDlg, IDC_COMBO2), nComp);
-
- nComp = ((cString[9] - '0') * 4) + ((cString[10] - '0') / 2) - 4;
- ComboBox_SetCurSel (GetDlgItem (hDlg, IDC_COMBO3), nComp);
-
- nComp = ((cString[11] - '0') * 2) + ((cString[10] - '0') % 2) - 1;
- ComboBox_SetCurSel (GetDlgItem (hDlg, IDC_COMBO4), nComp);
- return;
- }
-
- int ControlsToText (HWND hDlg, char *cString)
- {
- int nComp, nSpeed, nAp;
- char cNb[3];
-
- cString[0] = '0';
-
- /* AE MODE */
- if (IsDlgButtonChecked (hDlg, IDC_RADIO1))
- cString[1] = '0';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO2))
- cString[1] = '1';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO3))
- cString[1] = '2';
- else
- cString[1] = '4';
-
- /* AF MODE */
- if (IsDlgButtonChecked (hDlg, IDC_RADIO5))
- cString[2] = '0';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO6))
- cString[2] = '1';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO7))
- cString[2] = '2';
- else
- cString[2] = '3';
-
- /* WINDING */
- if (IsDlgButtonChecked (hDlg, IDC_CHECK1))
- cString[2] += 4;
-
-
- /* METERING MODE */
- if (IsDlgButtonChecked (hDlg, IDC_RADIO11))
- cString[3] = '0';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO12))
- cString[3] = '2';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO13))
- cString[3] = '4';
- else
- cString[3] = '6';
-
- /* FLASH MODE */
- if (IsDlgButtonChecked (hDlg, IDC_RADIO15))
- cString[4] = '0';
- else if (IsDlgButtonChecked (hDlg, IDC_RADIO16))
- cString[4] = '2';
- else
- cString[4] = '4';
-
- Edit_GetText (GetDlgItem (hDlg, IDC_EDIT1), cNb, 3);
- if (cNb[1] == 0)
- cNb[1] = '0';
- if (cNb[0] == 0)
- cNb[0] = '0';
- cString[5] = cNb[0];
- cString[6] = cNb[1];
-
- nComp = ComboBox_GetCurSel (GetDlgItem (hDlg, IDC_COMBO1));
- if (nComp < 8)
- cString[3]++;
- cString[7] = (char)('0' + (nComp % 8));
-
- nComp = ComboBox_GetCurSel (GetDlgItem (hDlg, IDC_COMBO2));
- if (nComp < 8)
- cString[4]++;
- cString[8] = (char)('0' + (nComp % 8));
-
- nSpeed = ComboBox_GetCurSel (GetDlgItem (hDlg, IDC_COMBO3));
- nSpeed += 4;
- cString[9] = (char)('0' + (nSpeed / 4));
-
- nAp = ComboBox_GetCurSel (GetDlgItem (hDlg, IDC_COMBO4));
- nAp += 1;
- cString[11] = (char)('0' + (nAp / 2));
-
- cString [10] = (char)('0' + ((nSpeed % 4) * 2) + ((nAp % 2)));
-
- cString [12] = '0';
- cString [13] = '0';
- cString [14] = '\0';
-
- return 14;
- }
-
- HWND GetDlgButtonChecked (HWND hDlg, int First, int Last)
- {
- int i;
-
- for (i = First; i <= Last; i++)
- if (IsDlgButtonChecked (hDlg, i))
- return GetDlgItem (hDlg, i);
-
- return GetDlgItem (hDlg, First);
- }
-