CXFA_Node* CXFA_FFWidgetHandler::CreateWidgetFormItem( XFA_WIDGETTYPE eType, CXFA_Node* pParent, CXFA_Node* pBefore) const { switch (eType) { case XFA_WIDGETTYPE_Barcode: return NULL; case XFA_WIDGETTYPE_PushButton: return CreatePushButton(pParent, pBefore); case XFA_WIDGETTYPE_CheckButton: return CreateCheckButton(pParent, pBefore); case XFA_WIDGETTYPE_ExcludeGroup: return CreateExclGroup(pParent, pBefore); case XFA_WIDGETTYPE_RadioButton: return CreateRadioButton(pParent, pBefore); case XFA_WIDGETTYPE_Arc: return CreateArc(pParent, pBefore); case XFA_WIDGETTYPE_Rectangle: return CreateRectangle(pParent, pBefore); case XFA_WIDGETTYPE_Image: return CreateImage(pParent, pBefore); case XFA_WIDGETTYPE_Line: return CreateLine(pParent, pBefore); case XFA_WIDGETTYPE_Text: return CreateText(pParent, pBefore); case XFA_WIDGETTYPE_DatetimeEdit: return CreateDatetimeEdit(pParent, pBefore); case XFA_WIDGETTYPE_DecimalField: return CreateDecimalField(pParent, pBefore); case XFA_WIDGETTYPE_NumericField: return CreateNumericField(pParent, pBefore); case XFA_WIDGETTYPE_Signature: return CreateSignature(pParent, pBefore); case XFA_WIDGETTYPE_TextEdit: return CreateTextEdit(pParent, pBefore); case XFA_WIDGETTYPE_DropdownList: return CreateDropdownList(pParent, pBefore); case XFA_WIDGETTYPE_ListBox: return CreateListBox(pParent, pBefore); case XFA_WIDGETTYPE_ImageField: return CreateImageField(pParent, pBefore); case XFA_WIDGETTYPE_PasswordEdit: return CreatePasswordEdit(pParent, pBefore); case XFA_WIDGETTYPE_Subform: return CreateSubform(pParent, pBefore); default: break; } return NULL; }
LRESULT CALLBACK WndProc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { int i; switch ( msg ) { case WM_CREATE: g_hwnd = hwnd; /* ---- Initial page ---- */ for (i = 0 ; i < 14 ; i++) Buttons[i] = CreateCheckButton(StyleNames[i],150,500+i); xButPos += 160; yButPos = 10; for (; i < 19 ; i++) Buttons[i] = CreateCheckButton(StyleNames[i],140,500+i); Buttons[i++] = CreatePushButton("Width +",70,100,WS_VISIBLE); Buttons[i++] = CreatePushButton("Width -",70,101,WS_VISIBLE); Buttons[i++] = CreatePushButton("Heigth +",70,102,WS_VISIBLE); Buttons[i++] = CreatePushButton("Heigth -",70,103,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowA",140,CREATEWINDOW,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowExA",140,CREATEWINDOWEX,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowExW",140,CREATEWINDOWW,WS_VISIBLE); /* ---- The 1st page of buttons ---- */ xButPos = 0; yButPos = 10; for (i = 0 ; i < 14 ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,170,600+i,0); xButPos += 180; yButPos = 10; for (; i < 26 ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,170,600+i,0); Back1But = CreatePushButton("Back - destroys edit",170,400,0); NextBut = CreatePushButton("Next",170,401,0); /* ---- The 2nd page of buttons ------*/ xButPos = 0; yButPos = 10; for (; i<40; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,170,600+i,0); xButPos += 180; yButPos = 10; for (; i < MAXMESSAGEBUTTONS ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,170,600+i,0); Back2But = CreatePushButton("Back",170,402,0); break; case WM_COMMAND: if (LOWORD(wParam) >= 600) { Msg[LOWORD(wParam)-600].Handler(hwndEdit, Msg[LOWORD(wParam)-600].MsgCode, Msg[LOWORD(wParam)-600].wParam, Msg[LOWORD(wParam)-600].lParam); break; } switch(LOWORD(wParam)){ case 100: EditWidth += 10; break; case 101: EditWidth -= 10; break; case 102: EditHeight += 10; break; case 103: EditHeight -= 10; break; case 400: BackToInitialPage(); break; case 401: ForwardToSecondPage(); break; case 402: BackToFirstPage(); break; case CREATEWINDOW: UnicodeUsed = FALSE; ReadNHide(); hwndEdit = CreateWindow("EDIT", TestStr, EditStyle | WS_CHILD | WS_VISIBLE, 350, 10, EditWidth, EditHeight, g_hwnd, NULL, g_hInst, NULL); break; case CREATEWINDOWEX: UnicodeUsed = FALSE; ReadNHide(); hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", TestStr, EditStyle | WS_CHILD | WS_VISIBLE , 350, 10, EditWidth, EditHeight, g_hwnd, NULL, g_hInst, NULL); break; case CREATEWINDOWW: UnicodeUsed = TRUE; ReadNHide(); hwndEdit = CreateWindowExW(WS_EX_CLIENTEDGE, L"EDIT", TestStrW, EditStyle | WS_CHILD | WS_VISIBLE , 350, 10, EditWidth, EditHeight, g_hwnd, NULL, g_hInst, NULL); break; } if (lParam == (LPARAM)hwndEdit) switch(HIWORD(wParam)) { case EN_CHANGE: PrintTextXY("EN_CHANGE notification",NOTIFYX,NOTIFYY,22); break; case EN_ERRSPACE: PrintTextXY("EN_ERRSPACE notification",NOTIFYX,NOTIFYY,24); break; /* --- FIXME not defined in w32api-2.3 headers case H_SCROLL: PrintTextXY("H_SCROLL notification",NOTIFYX,NOTIFYY,21); break; */ /* --- FIXME not defined in w32api-2.3 headers case KILL_FOCUS: PrintTextXY("KILL_FOCUS notification",NOTIFYX,NOTIFYY,23); break; */ /* --- FIXME not defined in w32api-2.3 headers case EN_MAXTEST: PrintTextXY("EN_MAXTEXT notification",NOTIFYX,NOTIFYY,23); break; */ case EN_SETFOCUS: PrintTextXY("EN_SETFOCUS notification",NOTIFYX,NOTIFYY,24); break; case EN_UPDATE: PrintTextXY("EN_UPDATE notification",NOTIFYX,NOTIFYY + 20,22); break; case EN_VSCROLL: PrintTextXY("EN_VSCROLL notification",NOTIFYX,NOTIFYY,23); break; } break; case WM_SIZE : return 0; case WM_CLOSE: DestroyWindow (g_hwnd); return 0; case WM_QUERYENDSESSION: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc ( hwnd, msg, wParam, lParam ); }
LRESULT CALLBACK WndProc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { int i; switch ( msg ) { case WM_CREATE: g_hwnd = hwnd; /* ---- Initial page ---- */ for (i = 0 ; i < 14 ; i++) Buttons[i] = CreateCheckButton(Styles[i].Name,CHECKBUTWIDTH,500+i); xButPos += CHECKBUTWIDTH + 10; yButPos = 10; for (; i < NUMBERCHECKS ; i++) Buttons[i] = CreateCheckButton(Styles[i].Name,CHECKBUTWIDTH,500+i); Buttons[i++] = CreatePushButton("Width +",70,100,WS_VISIBLE); Buttons[i++] = CreatePushButton("Width -",70,101,WS_VISIBLE); Buttons[i++] = CreatePushButton("Heigth +",70,102,WS_VISIBLE); Buttons[i++] = CreatePushButton("Heigth -",70,103,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowA",CHECKBUTWIDTH,CREATEWINDOW_ID,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowExA",CHECKBUTWIDTH,CREATEWINDOWEX_ID,WS_VISIBLE); Buttons[i++] = CreatePushButton("CreateWindowExW",CHECKBUTWIDTH,CREATEWINDOWW_ID,WS_VISIBLE); /* ---- The 1st page of buttons ---- */ xButPos = 0; yButPos = 10; for (i = 0 ; i < 14 ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,CHECKBUTWIDTH,600+i,0); xButPos += CHECKBUTWIDTH + 10; yButPos = 10; for (; i < 26 ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,CHECKBUTWIDTH,600+i,0); Back1But = CreatePushButton("Back - destroys ComboBox",CHECKBUTWIDTH,INITPAGE_ID,0); NextBut = CreatePushButton("Next",CHECKBUTWIDTH,SECONDPAGE_ID,0); /* ---- The 2nd page of buttons ------*/ xButPos = 0; yButPos = 10; for (; i<40; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,CHECKBUTWIDTH,600+i,0); xButPos += CHECKBUTWIDTH + 10; yButPos = 10; for (; i < MAXMESSAGEBUTTONS ; i++) MessageButtons[i] = CreatePushButton(Msg[i].Text,CHECKBUTWIDTH,600+i,0); Back2But = CreatePushButton("Back",CHECKBUTWIDTH,BACKFIRSTPAGE_ID,0); break; case WM_COMMAND: if (LOWORD(wParam) >= 600) { Msg[LOWORD(wParam)-600].Handler(hwndEdit, Msg[LOWORD(wParam)-600].MsgCode, Msg[LOWORD(wParam)-600].wParam, Msg[LOWORD(wParam)-600].lParam); break; } switch(LOWORD(wParam)){ case 100: ControlWidth += 10; break; case 101: ControlWidth -= 10; break; case 102: ControlHeight += 10; break; case 103: ControlHeight -= 10; break; case INITPAGE_ID: BackToInitialPage(); break; case SECONDPAGE_ID: ForwardToSecondPage(); break; case BACKFIRSTPAGE_ID: BackToFirstPage(); break; case CREATEWINDOW_ID: ReadNHide(); srect.top = CONTROLPOSY + ControlHeight; hwndEdit = CreateWindow(CONTROLCLASS, NULL, ComboStyle | WS_CHILD | WS_VISIBLE, CONTROLPOSX, CONTROLPOSY, ControlWidth, ControlHeight, g_hwnd, NULL, g_hInst, NULL); break; case CREATEWINDOWEX_ID: ReadNHide(); srect.top = CONTROLPOSY + ControlHeight; hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, CONTROLCLASS, NULL, ComboStyle | WS_CHILD | WS_VISIBLE , CONTROLPOSX, CONTROLPOSY, ControlWidth, ControlHeight, g_hwnd, NULL, g_hInst, NULL); break; case CREATEWINDOWW_ID: ReadNHide(); srect.top = CONTROLPOSY + ControlHeight; hwndEdit = CreateWindowExW(WS_EX_CLIENTEDGE, CONTROLCLASSW, NULL, ComboStyle | WS_CHILD | WS_VISIBLE , CONTROLPOSX, CONTROLPOSY, ControlWidth, ControlHeight, g_hwnd, NULL, g_hInst, NULL); break; } if (lParam == (LPARAM)hwndEdit) switch(HIWORD(wParam)) { case CBN_DROPDOWN: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_DROPDOWN notification",NOTIFYX,NOTIFYY,25,srect); break; case CBN_CLOSEUP: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_CLOSEUP notification",NOTIFYX,NOTIFYY,24,srect); break; case CBN_DBLCLK: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_DBLCLK notification",NOTIFYX,NOTIFYY,23,srect); break; case CBN_EDITCHANGE: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_EDITCHANGE notification",NOTIFYX,NOTIFYY,27,srect); break; case (WORD)CBN_ERRSPACE: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_ERRSPACE notification",NOTIFYX,NOTIFYY,25,srect); break; case CBN_KILLFOCUS: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_KILLFOCUS notification",NOTIFYX,NOTIFYY,26,srect); break; case CBN_EDITUPDATE: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_EDITUPDATE notification",NOTIFYX,NOTIFYY,27,srect); break; case CBN_SELCHANGE: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_SELCHANGE notification",NOTIFYX,NOTIFYY,26,srect); break; case CBN_SELENDCANCEL: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_SELENDCANCEL notification",NOTIFYX,NOTIFYY,29,srect); break; case CBN_SETFOCUS: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_SETFOCUS notification",NOTIFYX,NOTIFYY,25,srect); break; case CBN_SELENDOK: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("CBN_SELENDOK notification",NOTIFYX,NOTIFYY,25,srect); break; } return DefWindowProc ( hwnd, msg, wParam, lParam ); case WM_MEASUREITEM: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("WM_MEASUREITEM called",NOTIFYX,NOTIFYY,21,srect); break; case WM_COMPAREITEM: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("WM_COMPAREITEM called",NOTIFYX,NOTIFYY,21,srect); break; case WM_DRAWITEM: ScrollWindow (hwnd, 0, SCROLLAMOUNT, &srect, &srect); PrintTextXY("WM_DRAWITEM called",NOTIFYX,NOTIFYY,18,srect); break; case WM_SIZE : return 0; case WM_CLOSE: DestroyWindow (g_hwnd); return 0; case WM_QUERYENDSESSION: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc ( hwnd, msg, wParam, lParam ); }