473,320 Members | 1,900 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

Fun with the API...

Last night I was feeling a little bored and I happend to come across a
bit of code I wrote way back in the VB5 days. This code, was a simple
little windows application - but was created strictly using the windows
API. In other words, no forms. Just a module with a sub main. If your
interested in looking at it, you can find the code here:

http://www.mtogden.com/~tom/backup/code.html

Anyway, I thought it might be kind of interesting to convert this to
VB.NET. So, here you go. A simple windows application - with no forms:

Option Strict On
Option Explicit On

Imports System.Runtime.InteropServices

Public Class Window
Private Const CLASS_NAME As String = "VB_NET_WINDOW"
Private Const APP_TITLE As String = "API Window from VB.NET"

' API Constants
Private Const WS_CAPTION As Integer = &HC00000
Private Const WS_MAXIMIZEBOX As Integer = &H10000
Private Const WS_MINIMIZEBOX As Integer = &H20000
Private Const WS_OVERLAPPED As Integer = &H0
Private Const WS_SYSMENU As Integer = &H80000
Private Const WS_THICKFRAME As Integer = &H40000
Private Const WS_OVERLAPPEDWINDOW As Integer = _
(WS_OVERLAPPED Or _
WS_CAPTION Or _
WS_SYSMENU Or _
WS_THICKFRAME Or _
WS_MINIMIZEBOX Or _
WS_MAXIMIZEBOX)

Private Const CS_HREDRAW As Integer = &H2
Private Const CS_VREDRAW As Integer = &H1
Private Const IDI_APPLICATION As Integer = 32512
Private Const IDC_ARROW As Integer = 32512
Private Const LTGRAY_BRUSH As Integer = 1
Private Const SW_SHOWNORMAL As Integer = 1
Private Const WM_DESTROY As Integer = &H2
Private Const WM_LBUTTONDOWN As Integer = &H201
Private Const WM_RBUTTONDOWN As Integer = &H204
Private Const MB_OK As Integer = &H0

' Delegate instance for our window procedure...
Private Delegate Function WndProcDelgate _
(ByVal hWnd As IntPtr, _
ByVal Message As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As IntPtr

' API Defined Types
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure WNDCLASSEX
Public cbSize As Integer ' Size in bytes of the WNDCLASSEX structure
Public style As Integer ' Class style
Public lpfnWndProc As WndProcDelgate ' Pointer to the classes Window Procedure
Public cbClsExtra As Integer ' Number of extra bytes to allocate for class
Public cbWndExtra As Integer ' Number of extra bytes to allocate for window
Public hInstance As IntPtr ' Applications instance handle Class
Public hIcon As IntPtr ' Handle to the classes icon
Public hCursor As IntPtr ' Handle to the classes cursor
Public hbrBackground As IntPtr ' Handle to the classes background brush
Public lpszMenuName As String ' Resource name of class menu
Public lpszClassName As String ' Name of the Window Class
Public hIconSm As IntPtr ' Handle to the classes small icon
End Structure

<StructLayout(LayoutKind.Sequential)> _
Private Structure POINTAPI
Public x As Integer ' X-Coordinate in pixels
Public y As Integer ' Y-Coordinate in pixels
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure MSG
Public hWnd As IntPtr ' Window handle of the associated window
Public Message As Integer ' Message identifier
Public wParam As IntPtr ' Additional message info
Public lParam As IntPtr ' Additional message info
Public time As Integer ' Time message was posted
Public pt As POINTAPI ' Cursor position when message was posted
End Structure

' API Declare Statements
Private Declare Auto Function LoadCursor Lib "user32" _
(ByVal hInstance As IntPtr, _
ByVal lpCursorName As IntPtr) As IntPtr

Private Declare Auto Function LoadIcon Lib "user32" _
(ByVal hInstance As IntPtr, _
ByVal lpIconName As IntPtr) As IntPtr

Private Declare Auto Function RegisterClassEx Lib "user32" _
(ByRef pcWndClassEx As WNDCLASSEX) As Integer

Private Declare Auto Function CreateWindowEx Lib "user32" _
(ByVal dwExStyle As Integer, _
ByVal lpClassName As String, _
ByVal lpWindowName As String, _
ByVal dwStyle As Integer, _
ByVal x As Integer, _
ByVal y As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hWndParent As IntPtr, _
ByVal hMenu As IntPtr, _
ByVal hInstance As IntPtr, _
ByVal lpParam As IntPtr) As IntPtr

Private Declare Function ShowWindow Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal nCmdShow As Integer) As Boolean

Private Declare Function UpdateWindow Lib "user32" _
(ByVal hWnd As IntPtr) As Boolean

Private Declare Auto Function GetMessage Lib "user32" _
(ByRef lpMsg As MSG, _
ByVal hWnd As IntPtr, _
ByVal wMsgFilterMin As Integer, _
ByVal wMsgFilterMax As Integer) As Boolean

Private Declare Function TranslateMessage Lib "user32" _
(ByRef lpMsg As MSG) As Boolean

Private Declare Auto Function DispatchMessage Lib "user32" _
(ByRef lpMsg As MSG) As IntPtr

Private Declare Sub PostQuitMessage Lib "user32" _
(ByVal nExitCode As Integer)

Private Declare Function GetStockObject Lib "gdi32" _
(ByVal nIndex As Integer) As IntPtr

Private Declare Auto Function MessageBox Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Integer) As Integer

Private Declare Function SetFocus Lib "user32" _
(ByVal hWnd As IntPtr) As IntPtr

Private Declare Auto Function DefWindowProc Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal wMsg As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As IntPtr
Public Sub New()
Dim wndClass As WNDCLASSEX
Dim hWnd As IntPtr
Dim message As MSG
Dim hInstance As IntPtr = Marshal.GetHINSTANCE(GetType(Window).Module)

With wndClass
.cbSize = Marshal.SizeOf(wndClass)
.style = CS_HREDRAW Or CS_VREDRAW
.lpfnWndProc = New WndProcDelgate(AddressOf WndProc)
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = hInstance
.hIcon = LoadIcon(hInstance, New IntPtr(IDI_APPLICATION))
.hIconSm = LoadIcon(hInstance, New IntPtr(IDI_APPLICATION))
.hCursor = LoadCursor(hInstance, New IntPtr(IDC_ARROW))
.hbrBackground = GetStockObject(LTGRAY_BRUSH)
.lpszMenuName = Nothing
.lpszClassName = CLASS_NAME
End With

' register the class
RegisterClassEx(wndClass)

' Create the window
hWnd = CreateWindowEx _
(0, _
CLASS_NAME, _
APP_TITLE, _
WS_OVERLAPPEDWINDOW, _
0, _
0, _
640, _
480, _
IntPtr.Zero, _
IntPtr.Zero, _
hInstance, _
IntPtr.Zero)

ShowWindow(hWnd, SW_SHOWNORMAL)
UpdateWindow(hWnd)
SetFocus(hWnd)

Do While GetMessage(message, IntPtr.Zero, 0, 0)
TranslateMessage(message)
DispatchMessage(message)
Loop

End Sub

Private Function WndProc(ByVal hWnd As IntPtr, _
ByVal Message As Integer, _
ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

Select Case Message
Case WM_LBUTTONDOWN
MessageBox(hWnd, "Left Mouse Button Pressed", APP_TITLE, MB_OK)
Return IntPtr.Zero
Case WM_RBUTTONDOWN
MessageBox(hWnd, "Right Mouse Button Pressed", APP_TITLE, MB_OK)
Return IntPtr.Zero
Case WM_DESTROY
PostQuitMessage(0)
Return IntPtr.Zero
Case Else
Return DefWindowProc(hWnd, Message, wParam, lParam)
End Select
End Function

Public Shared Sub Main()
Dim wnd As New Window
End Sub
End Class

It doesn't do anything - but it was sort of ammusing :)
--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #1
11 4151
Hey! It's the ubiquitous "hello world" C Windows App! :-)
This is exactly the code that made me want to drop C and use VB!
I'm just teasin ya :-) Cool stuff Tom.

-Rob Teixeira [MVP]

"Tom Shelton" <to*@mtogden.com> wrote in message
news:Os*************@TK2MSFTNGP11.phx.gbl...
Last night I was feeling a little bored and I happend to come across a
bit of code I wrote way back in the VB5 days. This code, was a simple
little windows application - but was created strictly using the windows
API. In other words, no forms. Just a module with a sub main. If your
interested in looking at it, you can find the code here:

http://www.mtogden.com/~tom/backup/code.html

Anyway, I thought it might be kind of interesting to convert this to
VB.NET. So, here you go. A simple windows application - with no forms:

Option Strict On
Option Explicit On

Imports System.Runtime.InteropServices

Public Class Window
Private Const CLASS_NAME As String = "VB_NET_WINDOW"
Private Const APP_TITLE As String = "API Window from VB.NET"

' API Constants
Private Const WS_CAPTION As Integer = &HC00000
Private Const WS_MAXIMIZEBOX As Integer = &H10000
Private Const WS_MINIMIZEBOX As Integer = &H20000
Private Const WS_OVERLAPPED As Integer = &H0
Private Const WS_SYSMENU As Integer = &H80000
Private Const WS_THICKFRAME As Integer = &H40000
Private Const WS_OVERLAPPEDWINDOW As Integer = _
(WS_OVERLAPPED Or _
WS_CAPTION Or _
WS_SYSMENU Or _
WS_THICKFRAME Or _
WS_MINIMIZEBOX Or _
WS_MAXIMIZEBOX)

Private Const CS_HREDRAW As Integer = &H2
Private Const CS_VREDRAW As Integer = &H1
Private Const IDI_APPLICATION As Integer = 32512
Private Const IDC_ARROW As Integer = 32512
Private Const LTGRAY_BRUSH As Integer = 1
Private Const SW_SHOWNORMAL As Integer = 1
Private Const WM_DESTROY As Integer = &H2
Private Const WM_LBUTTONDOWN As Integer = &H201
Private Const WM_RBUTTONDOWN As Integer = &H204
Private Const MB_OK As Integer = &H0

' Delegate instance for our window procedure...
Private Delegate Function WndProcDelgate _
(ByVal hWnd As IntPtr, _
ByVal Message As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As IntPtr

' API Defined Types
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure WNDCLASSEX
Public cbSize As Integer ' Size in bytes of the WNDCLASSEX structure Public style As Integer ' Class style
Public lpfnWndProc As WndProcDelgate ' Pointer to the classes Window Procedure Public cbClsExtra As Integer ' Number of extra bytes to allocate for class Public cbWndExtra As Integer ' Number of extra bytes to allocate for window Public hInstance As IntPtr ' Applications instance handle Class Public hIcon As IntPtr ' Handle to the classes icon Public hCursor As IntPtr ' Handle to the classes cursor Public hbrBackground As IntPtr ' Handle to the classes background brush Public lpszMenuName As String ' Resource name of class menu Public lpszClassName As String ' Name of the Window Class
Public hIconSm As IntPtr ' Handle to the classes small icon End Structure

<StructLayout(LayoutKind.Sequential)> _
Private Structure POINTAPI
Public x As Integer ' X-Coordinate in pixels
Public y As Integer ' Y-Coordinate in pixels
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure MSG
Public hWnd As IntPtr ' Window handle of the associated window Public Message As Integer ' Message identifier
Public wParam As IntPtr ' Additional message info
Public lParam As IntPtr ' Additional message info
Public time As Integer ' Time message was posted
Public pt As POINTAPI ' Cursor position when message was posted End Structure

' API Declare Statements
Private Declare Auto Function LoadCursor Lib "user32" _
(ByVal hInstance As IntPtr, _
ByVal lpCursorName As IntPtr) As IntPtr

Private Declare Auto Function LoadIcon Lib "user32" _
(ByVal hInstance As IntPtr, _
ByVal lpIconName As IntPtr) As IntPtr

Private Declare Auto Function RegisterClassEx Lib "user32" _
(ByRef pcWndClassEx As WNDCLASSEX) As Integer

Private Declare Auto Function CreateWindowEx Lib "user32" _
(ByVal dwExStyle As Integer, _
ByVal lpClassName As String, _
ByVal lpWindowName As String, _
ByVal dwStyle As Integer, _
ByVal x As Integer, _
ByVal y As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hWndParent As IntPtr, _
ByVal hMenu As IntPtr, _
ByVal hInstance As IntPtr, _
ByVal lpParam As IntPtr) As IntPtr

Private Declare Function ShowWindow Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal nCmdShow As Integer) As Boolean

Private Declare Function UpdateWindow Lib "user32" _
(ByVal hWnd As IntPtr) As Boolean

Private Declare Auto Function GetMessage Lib "user32" _
(ByRef lpMsg As MSG, _
ByVal hWnd As IntPtr, _
ByVal wMsgFilterMin As Integer, _
ByVal wMsgFilterMax As Integer) As Boolean

Private Declare Function TranslateMessage Lib "user32" _
(ByRef lpMsg As MSG) As Boolean

Private Declare Auto Function DispatchMessage Lib "user32" _
(ByRef lpMsg As MSG) As IntPtr

Private Declare Sub PostQuitMessage Lib "user32" _
(ByVal nExitCode As Integer)

Private Declare Function GetStockObject Lib "gdi32" _
(ByVal nIndex As Integer) As IntPtr

Private Declare Auto Function MessageBox Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Integer) As Integer

Private Declare Function SetFocus Lib "user32" _
(ByVal hWnd As IntPtr) As IntPtr

Private Declare Auto Function DefWindowProc Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal wMsg As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As IntPtr
Public Sub New()
Dim wndClass As WNDCLASSEX
Dim hWnd As IntPtr
Dim message As MSG
Dim hInstance As IntPtr = Marshal.GetHINSTANCE(GetType(Window).Module)
With wndClass
.cbSize = Marshal.SizeOf(wndClass)
.style = CS_HREDRAW Or CS_VREDRAW
.lpfnWndProc = New WndProcDelgate(AddressOf WndProc)
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = hInstance
.hIcon = LoadIcon(hInstance, New IntPtr(IDI_APPLICATION))
.hIconSm = LoadIcon(hInstance, New IntPtr(IDI_APPLICATION))
.hCursor = LoadCursor(hInstance, New IntPtr(IDC_ARROW))
.hbrBackground = GetStockObject(LTGRAY_BRUSH)
.lpszMenuName = Nothing
.lpszClassName = CLASS_NAME
End With

' register the class
RegisterClassEx(wndClass)

' Create the window
hWnd = CreateWindowEx _
(0, _
CLASS_NAME, _
APP_TITLE, _
WS_OVERLAPPEDWINDOW, _
0, _
0, _
640, _
480, _
IntPtr.Zero, _
IntPtr.Zero, _
hInstance, _
IntPtr.Zero)

ShowWindow(hWnd, SW_SHOWNORMAL)
UpdateWindow(hWnd)
SetFocus(hWnd)

Do While GetMessage(message, IntPtr.Zero, 0, 0)
TranslateMessage(message)
DispatchMessage(message)
Loop

End Sub

Private Function WndProc(ByVal hWnd As IntPtr, _
ByVal Message As Integer, _
ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

Select Case Message
Case WM_LBUTTONDOWN
MessageBox(hWnd, "Left Mouse Button Pressed", APP_TITLE, MB_OK) Return IntPtr.Zero
Case WM_RBUTTONDOWN
MessageBox(hWnd, "Right Mouse Button Pressed", APP_TITLE, MB_OK) Return IntPtr.Zero
Case WM_DESTROY
PostQuitMessage(0)
Return IntPtr.Zero
Case Else
Return DefWindowProc(hWnd, Message, wParam, lParam)
End Select
End Function

Public Shared Sub Main()
Dim wnd As New Window
End Sub
End Class

It doesn't do anything - but it was sort of ammusing :)
--
Tom Shelton
MVP [Visual Basic]

Nov 20 '05 #2
In article <#t**************@TK2MSFTNGP12.phx.gbl>, Rob Teixeira [MVP] wrote:
Hey! It's the ubiquitous "hello world" C Windows App! :-)
This is exactly the code that made me want to drop C and use VB!
I'm just teasin ya :-) Cool stuff Tom.

-Rob Teixeira [MVP]


LOL! In fact, this code is a translation of some VB5 code I wrote that
was a translation of a tutorial on using the Win32 API in C++...

It's funny what a programmer will do when they're bored :)
--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #3
Respect!

I have the same VB 5.0 app that I wrote once while bored, but never bothered
porting it to .NET.

hehe...When you end a sentence with ".NET" and then a period, it looks just
like a FORTRAN operator.

--
Peace & happy computing,

Mike Labosh, MCSD
Owner, vbSensei.Com
"Escriba coda ergo sum." -- vbSensei
Nov 20 '05 #4
In article <ee**************@TK2MSFTNGP10.phx.gbl>, Mike Labosh wrote:
Respect!

I have the same VB 5.0 app that I wrote once while bored, but never bothered
porting it to .NET.


I think every one must have done this back then... I think it was
really just a chance to give the new AddressOf operator a try :)

--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #5
* Tom Shelton <to*@mtogden.com> scripsit:
LOL! In fact, this code is a translation of some VB5 code I wrote that
was a translation of a tutorial on using the Win32 API in C++...

It's funny what a programmer will do when they're bored :)


But it's a nice, stable application.

;-)

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>
Nov 20 '05 #6
Hm, I must be the oddball that never tried this in VB :-)
I got so tired of writing it in C (in environments that didn't support the
standard window project templates - and pre-MFC). And, even with the
templates, you still had to write a ton of junk to handle the messages.
With VB, you click on New Project, add Windows App, and write one IF..ELSE..
statement to check for buttons and pop up a MsgBox. Can't beat that! :-)

Actually, the one time I did have to manage stuff at this level was in VB
5/6 dealing with custom controls that didn't use a UserControl. That was
painful - especially dealing with Tabbing behavior. :-(

One cool thing in .NET is that you can also inherit from the base Control
class, which does all the menial message handling and window creation stuff,
then override the bits you need. More MFC-ish, but definitely a lot more
flexible (or at the very least far simpler) than the old VB alternatives.

I think I need more "bored" time. Not getting enough of that these days :-)

-Rob Teixeira [MVP]

"Tom Shelton" <to*@mtogden.com> wrote in message
news:ue*************@tk2msftngp13.phx.gbl...
In article <#t**************@TK2MSFTNGP12.phx.gbl>, Rob Teixeira [MVP]

wrote:
Hey! It's the ubiquitous "hello world" C Windows App! :-)
This is exactly the code that made me want to drop C and use VB!
I'm just teasin ya :-) Cool stuff Tom.

-Rob Teixeira [MVP]


LOL! In fact, this code is a translation of some VB5 code I wrote that
was a translation of a tutorial on using the Win32 API in C++...

It's funny what a programmer will do when they're bored :)
--
Tom Shelton
MVP [Visual Basic]

Nov 20 '05 #7
On 2003-12-24, Rob Teixeira [MVP] <RobTeixeira@@> wrote:
Hm, I must be the oddball that never tried this in VB :-)
I got so tired of writing it in C (in environments that didn't support the
standard window project templates - and pre-MFC). And, even with the
templates, you still had to write a ton of junk to handle the messages.
With VB, you click on New Project, add Windows App, and write one IF..ELSE..
statement to check for buttons and pop up a MsgBox. Can't beat that! :-)

True. It was one the great attractors to VB...
Actually, the one time I did have to manage stuff at this level was in VB
5/6 dealing with custom controls that didn't use a UserControl. That was
painful - especially dealing with Tabbing behavior. :-(

Yikes... I had a DateTimePicker and an IP Address control that I wrote
for VB5 - and getting the tabbing working properly was a big headache...
In fact, I'm not sure if I ever did get it working 100% :) I'll have to
see if I can find that old code....
One cool thing in .NET is that you can also inherit from the base Control
class, which does all the menial message handling and window creation stuff,
then override the bits you need. More MFC-ish, but definitely a lot more
flexible (or at the very least far simpler) than the old VB alternatives.

I agree. Much simpler now. There really was no practicle purpose, just
found the old VB5 code and I couldn't resist.
I think I need more "bored" time. Not getting enough of that these days :-)


My problem is I stay up to late...

--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #8
> I think every one must have done this back then... I think it was
really just a chance to give the new AddressOf operator a try :)


That's precisely what it was, now that I think of it. I wrote wrapper
classes for every Enum- callback function I could find and really went off
the deep end. And then maybe only ever used like two of them.
--
Peace & happy computing,

Mike Labosh, MCSD
Owner, vbSensei.Com
"Escriba coda ergo sum." -- vbSensei
Nov 20 '05 #9
> But it's a nice, stable application.

And user friendly, too. I bet my wife (Dr. Kevorkian of software) couldn't
even screw it up.
--
Peace & happy computing,

Mike Labosh, MCSD
Owner, vbSensei.Com
"Escriba coda ergo sum." -- vbSensei
Nov 20 '05 #10
* "Mike Labosh" <ml*****************@vbsensei.com> scripsit:
But it's a nice, stable application.


And user friendly, too. I bet my wife (Dr. Kevorkian of software) couldn't
even screw it up.


ROFL

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>
Nov 20 '05 #11
"Mike Labosh" <ml*****************@vbsensei.com> wrote in message
news:ee**************@TK2MSFTNGP10.phx.gbl...

(snip)

hehe...When you end a sentence with ".NET" and then a period, it looks just like a FORTRAN operator.


Oh my gosh, does that bring back memories! I haven't thought about FORTRAN
in years. Now I'm nostalgic, I think I'll go back and look at some of the
programs I wrote years ago.

Living in the past...

Carl Rapson
Nov 20 '05 #12

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL)...
2
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues...
3
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which...
0
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. ...
1
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the...
4
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the...
1
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url ...
2
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value...
3
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.