devexpress pdf viewer : Convert selected pages of pdf to word online control SDK platform web page wpf winforms web browser apple_iigs_technical_notes_80-911-part694

Developer Technical Support
March 1990
Apple II
#80:  QuickDraw II Clipping
11 of 9
• Relativity the Special and General Theory (1920)
Convert selected pages of pdf to word online - control SDK platform:C# PDF Page Extract Library: copy, paste, cut PDF pages in, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
Convert selected pages of pdf to word online - control SDK platform:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
Apple II
#81:  Extended Control Ecstasy
1 of 6
Apple II
Technical Notes
Developer Technical Support
Apple II
#81: Extended Control Ecstasy
Revised by: Dave Lyons
July 1991
Written by: C.K. Haun
May 1990
This Technical Note discusses special features and concerns that should be considered when
using the extended controls introduced in System Software 5.0.
Changes  since  November 1990:   Added  information on which fields the Control Manager
automatically  copies  from  a  custom  control’s  template  to  its  control  record.   Corrected
NewControl2 parameter order.  Added a note about SetCtlTitle.  Changed some “pea
0” instructions into “pha” when pushing space for results.
The extended controls introduced in System Software 5.0 allow the application programmer a
great deal more freedom in designing and controlling applications.  The new features enhance
the functionality of the controls and TaskMaster, but can cause confusion and consternation
if you are careless with the new parameter block .  This Note also includes a discussion of the
multipart nature of many of the extended controls and some pointers for writing extended custom
Counting The Costs
One of the major stumbling blocks seen when programming the new extended controls is bad
parameter counts.   Extended controls introduce parameter blocks and parameter counts to the
Control Manager.   You  need to  fully  understand  the parameters  required and  the resulting
parameter count for each control you create, or you can experience program problems that may
be very confusing and difficult to track down.
Remember also that the Control Manager does not understand “skipping parameters.”  If you are
creating an extended  radio  button and you  want key equivalents, but not  a color table, you
cannot ignore the color table parameter field.  There is no way to tell the Control Manager to
“skip” a field during control creation; make sure you initialize all the fields to values that are
meaningful—either a real pointer, handle, resource ID, or zeroes.   In this case, if you try to
“skip” the color table and do not zero out the color table parameter field, the resulting radio
button wears ugly colors you do not expect.
control SDK platform:C# PDF Page Insert Library: insert pages into PDF file in
page2 }; // Specify a position for inserting the selected pages. doc2.InsertPages( pages, pageIndex); // Output the new document Insert Blank Page to PDF File in
control SDK platform:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
page2} ' Specify a position for inserting the selected pages. doc2.InsertPages(pages, pageIndex) ' Output the new document. Insert Blank Page to PDF File Using
Apple II Technical Notes
Apple II
2 of 6
#81:  Extended Control Ecstasy
As you can imagine, miscounting parameters in other extended controls can produce confusing
results,  so  the  parameter  count  is  the  first  place  you  should  check  when  you’re  having
difficulties creating extended controls.
For Rez users, the Types.Rez file contains  extended control templates that automatically
generate the correct count value, so programmers creating all their controls with the Resource
Compiler should not have these problems.
Silly Little Bits
The other area of the new parameter block model that is giving folks trouble is the moreflags
field.  This field hones the definition given by the reference fields and can cause you much
grief if misused.  Make sure to set the reference bits to the values you require.  The bit settings
have been standardized across all the extended controls, with %00 indicating a pointer, %01
indicating a handle, and %10 indicating a resource.   Remember also to set the bits for all the
references you have—strings, color tables, or whatever else may be ambiguously referenced in
the control.
If you accidentally use the wrong bit pattern, you can experience strange bugs ranging from
garbled text to SysFailMgr caused by a nonexistent resource being referenced.  Again, Rez
users can use the equates for all the reference specifiers in the Types.Rez file to avoid confusion
and evil bugs.
The Parts are Greater than the Whole
To  create  some  new  extended  controls,  like  pop-up  menu  controls  and  LineEdit  controls,
functions of different tool sets were combined.  Pop-up menu controls are a combination of the
Control Manager  and the Menu  Manager,  LineEdit  controls  are  a blending  of  the  Control
Manager and the LineEdit tool set, and other new control types follow the same pattern.
This means that, at times, you have to go further into the documentation to find information.
Getting the text out of an LineEdit extended control is a multistep process that is a good example
of this type of problem.
MyLineEdit dc     i2'8'                   ; parameter count
dc     i4'1'                   ; id number 1
dc     i2'10,10,23,90'         ; control rectangle
dc     i4'editLineControl'     ; process reference
dc     i2'0'                   ; flags
dc     i2'fCtlCanBeTarget+fCtlWantEvents+fCtlProcRefNotPtr'
; moreflags
dc     i2'0'                   ; refcon
dc     i2'15'                  ; maximum characters allowed
dc     i4'0'                   ; no default text
MyLineEditHandle ds 4                     ; handle for the created control
pushlong mywindowgrafport      ; window that control will reside in
pea    0                       ;verb, single Extended control
pushlong #MyLineEdit
control SDK platform:VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. VB.NET HTML5 PDF Viewer: Annotate PDF Online.
control SDK platform:C# HTML5 PDF Viewer SDK to annotate PDF document online in C#.NET
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. C# HTML5 PDF Viewer: Annotate PDF Online.
Developer Technical Support
July 1991
Apple II
#81:  Extended Control Ecstasy
3 of 6
sta    MyLineEditHandle        ; save the control handle
sta    MyLineEditHandle+2
control SDK platform:VB.NET PDF Image Redact Library: redact selected PDF images in vb.
Text. PDF Export. Convert PDF to Word (.docx). Convert to Text. Convert PDF to JPEG. Convert PDF to Png Page: Create Thumbnails. Page: Insert PDF Pages. Page: Delete
control SDK platform:C# Word - Insert Blank Word Page in C#.NET
doc1 = new DOCXDocument(inputFilePath1); // Specify a position for inserting the selected page. Add and Insert Multiple Word Pages to Word Document Using C#.
Apple II Technical Notes
Apple II
4 of 6
#81:  Extended Control Ecstasy
When you want to get the text back out of that control later, you begin to experience what it
means to have a control that is an amalgam of various tools.   You would start by using the
control handle returned by NewControl2
Scratch    equ    $0                      ; some scratch space
Scratch2   equ    $4
lda    MyLineEditHandle        ; move the ControlHandle to
sta    Scratch                 ; some direct page space
lda    MyLineEditHandle+2
sta    Scratch+2
lda    [Scratch]
ldy    #2
lda     [Scratch],y             
; and dereference it, putting it back in
some dpage
sta    Scratch+2               ; space to use it.
stx    Scratch
That gives you the pointer to the control record.  Stored in the control record is the handle of the
LineEdit item that is actually controlling the text processing:
; make space for the text handle to be
ldy    #octlData               ; offset to the ctlData section
; of the ControlRecord
lda    [Scratch],y             ; where the handle for the actual LineEdit
tax                            ; item was stored
lda    [Scratch],y
_LEGetTextHand                 ; ask for the handle for the text
pla                            ; in this LineEdit control
 sta     Scratch2                
; and now you have the handle to the text
you want.
sta    Scratch2+2
The main point is that when you are using extended controls, you often cannot use the Control
Manager to do everything that needs  to be done.   You also need to understand and use the
supplementary or “hidden” tool sets.
Here’s another example, using a pop-up menu extended control, and in this case we define a font
pop-up that contains all the font names currently available.
MyPopUpControl dc i2'9'                   ; parameter count of 9
dc    i4'1'                    ; control ID of 1
 dc    i2'2,2,0,0'               ; Position, upper left corner of the window,
; Control Manager calculate full size
dc    i4'popUpControl'         ; def proc for PopUp
dc    i2'0'                    ; flags
dc    i2'fCtlWantEvents+fCtlProcRefNotPtr'
; more flags
dc    i4'0'                    ; ref con
dc    i2'0'                    ; title width, will be calculated
dc    i4'mymenu'               ; pointer to actual menu structure
control SDK platform:C# PDF Page Rotate Library: rotate PDF page permanently in
Online C# class source codes enable the ability to rotate int rotateInDegree = 270; // Rotate the selected page. C#.NET Demo Code to Rotate All PDF Pages in C#
control SDK platform:VB.NET PDF insert image library: insert images into PDF in
Access to freeware download and online VB.NET class to provide users the most individualized PDF page image as Png, Gif and TIFF, to any selected PDF page with
Developer Technical Support
July 1991
Apple II
#81:  Extended Control Ecstasy
5 of 6
dc    i2'500'                  ; initial value, item number of item
; to be displayed in popup at creation
control SDK platform:C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
control SDK platform:VB.NET PDF - Annotate PDF with WPF PDF Viewer for VB.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
Apple II Technical Notes
Apple II
6 of 6
#81:  Extended Control Ecstasy
mymenu     dc    i2'0'                    ; version number, should be 0
dc    i2'200'                  ; menu ID number
dc    i2'0'                    ; menu flags
dc    i4'mymenutitle'          ; pointer to menu title
dc    i4'mymenuitem1'          ; first menu item
dc    i4'mymenuitem2'          ; second menu item
dc    i4'0'                    ; null terminator, end of menu
mymenutitle str 'Font'
mymenuitem1 dc i2'0'                      ; version number
dc i2'500'                     ; item number
dc i2'0'                       ; no hot keys
dc i2'0'                       ; not checked
dc i2'0'                       ; item flags, no special drawing
dc i4'mymenuitem1title'
mymenuitem1title str 'Plain'
mymenuitem2 dc i2'0'                      ; version number
dc i2'501'                     ; item number
dc i2'0'                       ; no hot keys
dc i2'0'                       ; not checked
dc i2'1'                       ; item flags, bold face this one
dc i4'mymenuitem2title'
mymenuitem2title str 'Bold'
Now  create this control:
pushlong mywindow              ; target window grafptr
pea    0                       ; verb, single control pointer
pushlong #MyPopUpMenu
pulllong mypopuphandle         ; save the handle
This pop-up menu control created is not associated with the menu bar across the top of the
desktop.  You can consider each of your pop-up menu controls as separate menu bars, so if you
want to perform Menu Manager calls on a pop-up menu control, you need to set the menu to
point at your pop-up menu control.  In this example, to add all the fonts available to the pop-up
menu you would:
pha                            ; space to hold current bar
_GetMenuBar                    ; get the handle to the current menu bar
pushlong mypopuphandle
pea    200                     ; id number of this menu
pea    502                     ; first font family ID number to use
pea    0                       ; fontspecbits
pea    0
pea    0
pea    200
_CalcMenuSize                  ; re-size the popup menu
; restore the previous menu as the current
Developer Technical Support
July 1991
Apple II
#81:  Extended Control Ecstasy
7 of 6
Controls That Are Not Controls
The new picture extended control is not a “full-fledged” control; it has been provided to simplify
your programming tasks.   The picture control does not support normal mouse hit testing and
highlighting.  Think of it as a built-in extension to your content drawing routine, and not as a
control.   It  is  provided  to  allow  you  to  refresh  your  whole  window  with  a  single
DrawControls call, instead of drawing the controls and then drawing pictures.   The icon
button extended control has been provided as the graphic full-function control.  If you need or
want a fully functional control that uses a picture, you should consider writing your own custom
control procedure.
Custom Extended Controls
Custom controls can also benefit from all the advantages of extended controls.  You can create a
custom  control that uses  a template, can be a resource, has a definition procedure  that  is a
resource, and responds to all the new control calls.  If you write an extended custom control or
upgrade a previously-written custom control, there are new messages and changes to existing
messages of which you need to be aware.  These changes are documented in volume 3 of the
Apple II
Toolbox Reference.
The Control Manager copies the following fields from the control template to the control record
before it sends your control the init message:  ctlOwner, ctlID, ctlRect, ctlFlag,
ctlHilite, ctlMoreFlags, ctlVersion, ctlRefCon, and ctlProc.  The ctlNext
field is owned by the Control Manager.  If any additional fields need to be set up based on the
control template (such as ctlValue, ctlData, ctlColor, and any custom fields), your
init routine needs to take care of it.
Putting your custom control definition procedure in a resource can significantly enhance the
functionality of the custom control.  You may find it easier to add to all of your programs and
you do not have to manage the code space required. If you do write a custom control definition
procedure and want to store it as a resource, here are some hints for success.
First, the code you store in your resource fork must be fully compiled and linked code.  The code
resource converter uses the System Loader to load the code, so the code must be executable
code, not object code.
Second, set the convert and locked bits of the resource attributes for your code resource.
The convert bit must be set to tell the Resource Manager to call the code resource converter
when  it  loads  this  resource.  The  resource  type  for  control  definition  procedures  is
rCtlDefProc, $800C.
By setting locked but not fixed, memory fragmentation is reduced (because of how the code
resource  converter  and  Memory  Manager  work).   Setting  the  locked  attribute  is  also
recommended for compatibility with future system software.
Third, keep in mind that this definition procedure may be purged and reloaded whenever the
Memory Manager needs the space.  This means that you cannot store any information in your
Apple II Technical Notes
Apple II
8 of 6
#81:  Extended Control Ecstasy
definition procedure if you want to keep track of it between calls to the definition procedure.  If
you do, and your definition procedure gets purged and reloaded, you lose that data.
If you need data space for your custom control, use the control record as your stash.  You can
easily either use the fields already provided in the control record, or you can expand the control
record to as much space as you need (within sensible limits) and store your data there.
Developer Technical Support
July 1991
Apple II
#81:  Extended Control Ecstasy
9 of 6
Control definition procedures are initially loaded with purge level zero.
When they are released, they are given purge level three.  If they are then
reloaded, the Resource Manager does not change the purge level back to
zero—your  definition  procedure  may  then  be  purged  (even  while
executing)  unless  its  handle  is  locked.   The  solution  is  to  lock  your
definition procedure handle within the procedure:
myPosition    pea    0                ; space for result
pea    0
pushLong #myPosition
and  unlock  your  handle  with  HUnlock  on  exit.   This  keeps  your
procedure safe, while not creating “code islands,” which clog up memory.
Changing a Control’s Title
If you call SetCtlTitle to give a control a new title, everything is great if the new title is
referenced the same way as the current title (by pointer, by handle, or by resource ID).  If the
new title is referenced differently, you must first call SetCtlMoreFlags on your control so
that the SetCtlTitle value can be interpreted correctly.
The extended controls provided in System Software 5.0 and later are a great leap forward for
programmers.   They relieve the application of much of the tedious detail code that relates to
housekeeping, not the guts of application programming.  Used in combination with the enhanced
TaskMaster, you can have an application’s visual interface up and running a lot faster, leaving
you more time to work on the heart of your application.
Further Reference
• Apple II
Toolbox Reference, Volumes 1 through 3.
Documents you may be interested
Documents you may be interested