Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 75
Default Why doesn't this work ?

Hi all,

I have a UserForm with a TextBox and a CommandButton.
I want to write some text on the TexBox using the 'SendMessage' API when the
CommandButton is clicked .

I am able to get the window handle of the TextBox control by using the
'apiGetFocus' but for somw reason, the text is not added !!!!


Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
TextBox1.SetFocus
Hndle = apiGetFocus
SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


Any help would be much appreciated.

Regards.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 811
Default Why doesn't this work ?


All of the MSForms controls are windowless, so none of the API calls
that return window handles will work on them. The window handle returned by
your GetFocus API call is for a Window that is part of the UserForm itself,
rather than any of the controls on it. Is there some reason you need to
write to the textbox this way? It would be much easier to just set its Text
property.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm

"RAFAAJ2000" wrote in message
...
Hi all,

I have a UserForm with a TextBox and a CommandButton.
I want to write some text on the TexBox using the 'SendMessage' API when
the
CommandButton is clicked .

I am able to get the window handle of the TextBox control by using the
'apiGetFocus' but for somw reason, the text is not added !!!!


Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As
Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
TextBox1.SetFocus
Hndle = apiGetFocus
SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


Any help would be much appreciated.

Regards.



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 75
Default Why doesn't this work ?

Thanks for the quick reply Rob,

Actually the Hnandle of the UserForm is different from that of the TextBox
as shown by the MsggBox in the snippet take below :

Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
Form_Handle = FindWindow(vbNullString, Me.Caption)
TextBox1.SetFocus
TextBox_Handle = apiGetFocus
MsgBox Form_Handle & vbTab & TextBox_Handle
SendMessage hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


The reason I want to use the SendMessage API rather than the Text property
is for experimenting purposes only. I saw some similar code on the Web for
Access which does work ! I don't see why Excel shouldn't !

Regards.




"Rob Bovey" wrote:


All of the MSForms controls are windowless, so none of the API calls
that return window handles will work on them. The window handle returned by
your GetFocus API call is for a Window that is part of the UserForm itself,
rather than any of the controls on it. Is there some reason you need to
write to the textbox this way? It would be much easier to just set its Text
property.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm

"RAFAAJ2000" wrote in message
...
Hi all,

I have a UserForm with a TextBox and a CommandButton.
I want to write some text on the TexBox using the 'SendMessage' API when
the
CommandButton is clicked .

I am able to get the window handle of the TextBox control by using the
'apiGetFocus' but for somw reason, the text is not added !!!!


Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As
Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
TextBox1.SetFocus
Hndle = apiGetFocus
SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


Any help would be much appreciated.

Regards.




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 811
Default Why doesn't this work ?

Actually the Hnandle of the UserForm is different from that of the TextBox
as shown by the MsggBox in the snippet take below :


You aren't getting the window handle of the UserForm itself, but rather
a child window of the UserForm that represents the area you drop controls
on.

The reason I want to use the SendMessage API rather than the Text
property
is for experimenting purposes only. I saw some similar code on the Web for
Access which does work ! I don't see why Excel shouldn't !


Access uses a much different Forms package than the rest of the Office
applications, so they aren't comparable.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm

"RAFAAJ2000" wrote in message
...
Thanks for the quick reply Rob,

Actually the Hnandle of the UserForm is different from that of the TextBox
as shown by the MsggBox in the snippet take below :

Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As
Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
Form_Handle = FindWindow(vbNullString, Me.Caption)
TextBox1.SetFocus
TextBox_Handle = apiGetFocus
MsgBox Form_Handle & vbTab & TextBox_Handle
SendMessage hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


The reason I want to use the SendMessage API rather than the Text
property
is for experimenting purposes only. I saw some similar code on the Web for
Access which does work ! I don't see why Excel shouldn't !

Regards.




"Rob Bovey" wrote:


All of the MSForms controls are windowless, so none of the API calls
that return window handles will work on them. The window handle returned
by
your GetFocus API call is for a Window that is part of the UserForm
itself,
rather than any of the controls on it. Is there some reason you need to
write to the textbox this way? It would be much easier to just set its
Text
property.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm

"RAFAAJ2000" wrote in message
...
Hi all,

I have a UserForm with a TextBox and a CommandButton.
I want to write some text on the TexBox using the 'SendMessage' API
when
the
CommandButton is clicked .

I am able to get the window handle of the TextBox control by using the
'apiGetFocus' but for somw reason, the text is not added !!!!


Code:

Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" ()
As
Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
_
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam
As
Any) As Long

Const WM_SETTEXT = &HC

Private Sub CommandButton1_Click()
TextBox1.SetFocus
Hndle = apiGetFocus
SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!"
End Sub


Any help would be much appreciated.

Regards.






Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Macro to update a column in a work based on another work sheet WickerMan New Users to Excel 1 December 4th 09 12:58 PM
how can i automatically generate work order numbers from work orde rob h Excel Discussion (Misc queries) 1 July 13th 09 07:59 PM
flash object dont work in my excel work sheet Nitn Excel Discussion (Misc queries) 0 July 4th 09 08:00 AM
Counting dates in multiple work sheets and work books Savage Excel Discussion (Misc queries) 0 December 19th 05 11:41 PM
Is there away to keep "auto save" from jumping to the first work sheet in the work book? Marc New Users to Excel 2 April 21st 05 01:27 AM


All times are GMT +1. The time now is 09:06 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"