Klaus,
It sounds like you're moving on to quite non-trivial matters. I'll address each below:
1. I'll have to debug what's occurring, but you're saying that getch is not working for special keys? Looking at the code, special keys should first return. The second call should return a special key code. I'll make sure this is actually occurring, but it appears to be working properly for insert, delete, the arrow keys, or the function keys.
2. There is currently no function for setting the mouse cursor properly (using native Windows calls, I mean). I can look into adding it. You could then set the cursor based on mouse position if you wanted.
3. The AppGraphics model for resizing Windows is quite primitive. Unlike many other toolkits, the available drawing surface is exactly what you see in the Window, nothing more or less. The developer must manage any redraws based on redrawing and scrolling. Simply adding scroll bars will not do what you're asking; the scroll bars are, again, managed by the developer, not AppGraphics.
This behavior is somewhat counter-intuitive, so I'll need to explain. Let's assume that you're creating a spreadsheet-like application with 1200 rows. Obviously these rows will not all fit on the screen. When it first opens the window, we'll say we can display the first 20 rows. The application needs to draw these rows to the window. We also need to add a scroll bar. Because we have 1200 rows, our scrollbar initialization will look something like:
iscrollbar = createscrollbar (630, 0, 10, 480, SCROLL_VERTICAL, handle_scroll)
call setscrollrange(iscrollbar, 0, 1200)
call setscrollposition(iscrollbar, 0)
Above after creating the scrollbar, we've also explicitly stated it can scroll from a position of 0 to 1200 based on our spreadsheet rows. The handle_scroll subroutine will then handle redrawing the window whenever it moves. In the spreadsheet case, it will need to redraw everything. The code would be something like:
subroutine handle_scroll(newPos)
implicit none
top_row = newPos
call redraw_window()
end subroutine handle_scroll
The above assumes that some global top_row variable exists storing the topmost row of our spreadsheet to display.
This design requires the developer to do quite a bit more work as compared to other toolkits, but it also allows for drastically more control over the behavior of a graphical application.
I'm sure my explanation above is probably not sufficient, so please feel free to ask more questions. I'll be happy to provide a more thorough scrolling example if you'd like.
Jeff Armstrong
Approximatrix, LLC