|
Im getting System.OverflowException, with a very large number for OwnerhWnd
I have:
<br />
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long<br />
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long<br />
and in load method of mainform,
<br />
Dim OwnerhWnd As Integer<br />
Dim ret As Integer<br />
Dim hWnd As Long<br />
hWnd = FindWindow("MainForm", "")<br />
OwnerhWnd = GetWindow(hWnd, GW_OWNER)<br />
Anyone tell me whats wrong here?
I want to do that so I can call
ret = ShowWindow(OwnerhWnd, SW_HIDE)
but crashing on line OwnerhWnd = GetWindow(hWnd, GW_OWNER)
thanks
|
|
|
|
|
The .Handle property of a Form is the HWND.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks, instead of all that other stuff, I only needed
<br />
Dim OwnerhWnd As Long<br />
OwnerhWnd = Me.Handle.ToInt64<br />
' Hide from task list:<br />
Call ShowWindow(OwnerhWnd, SW_HIDE)<br />
to achieve what I wanted
|
|
|
|
|
And the overflow problem was because I used ret as Int rather then Int64
|
|
|
|
|
Why are you expecting a return type of Long?? Long is 64 bits on a 32 bit proc and 128 bits wide on a 64 bit proc.
Any function that returns a handle returns a value the same as the data width for the processor it's running on. The proper return type for FindWindow is IntPtr since IntPtr is the width of the proc it's on.
Private Declare Auto FindWindow Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String ) _
As IntPtr
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Dave Kreskowiak wrote: Long is 64 bits on a 32 bit proc and 128 bits wide on a 64 bit proc.
Is it ? In C++, it's 32 bit for 32 bit processors, the same as int.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
In VB.NET, Long is 64-bits wide. In VB6, it's 32-bits, same as an Int32 in the CLR. Visual Basic.NET: Integral Types[^]
Come to think of it...I really can't confirm that a VB.NET Long is 128-bits wide on a 64-bit proc. I don't have one to test it. It could very well be locked at 8 bytes wide.
I can, however, confirm that IntPtr is the same width as the proc data width.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Well, you learn something new every day
As it happens, I've been doing lots of C++ work making a project 64 bit ready of late.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote: I've been doing lots of C++ work making a project 64 bit ready of late.
You lucky dog! Got a test platform setup for it? What's under the hood?
Oh! That little "thing" you sent me apparently worked. I haven't gotten a confirmation yet, so I guess we'll have to wait and see what happens. Thanks again!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Dave Kreskowiak wrote: Got a test platform setup for it? What's under the hood?
No, at this point I'm just turning on 64 bit warnings and working through the code. However, with tax time coming up, it seems like a good excuse to lash out sometime soon....
Dave Kreskowiak wrote: I haven't gotten a confirmation yet, so I guess we'll have to wait and see what happens. Thanks again!
You're welcome. LMK if there's any hassle, I can chase it up on my end.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks, I just played around until it worked, but that one I shouldnt have missed.
|
|
|
|
|
I have an experience on Using VBA list box,
There is a mode for the list box to have a checkbox before the item text.
Does the VB.NET listbox have this function ?
If not ...
Any suggestion to do that?
Thanks~!
|
|
|
|
|
The ListBox control doesn't do this anymore.
Instead, use the CheckedListBox control.
|
|
|
|
|
You could also use ListView amd turn on checkboxes.
Use listview if you also want to change colour of items in the list.
However I had trouble disabling checking items on click, CheckedListBox was easier for that.
|
|
|
|
|
I have create a control for my own use,
There are number of text box, labal, ...
And there is a save button named "btnSave"
When Click the "btnSave"
I would like to show a message to the status bar,
where the status is a control on the Form.
The structure like
Form
+---myControl
| +---label1
| +---label2
| +---textField1
| +---btnSave
| +---etc ...
|
+---StatusBar
|---StatusItem1
How can show the the message to StatusItem1 when I click the btnSave?
for example,
Click "btnSave", the Message is "Hello", which will show in statusItem1.text
Thank YOu!
|
|
|
|
|
StatusBar1.Panels(1).Text = "Hello"
|
|
|
|
|
Hi,
I'm a C# type that just landed a VB.Net assignment and I'm having trouble getting a handle on Sub Main in VB.Net. The folks at the new place don't use Main while all the examples in documentation seem to. Evidently it's optional and not very VB6. Where does control get passed to if there isn't one? Also, every example that I've seen places Main() in a Module, not a Class. Is that important or does it just default it to Public?
Thanks in advance.
|
|
|
|
|
You're right. The Main() function is optional in VB. You can set the app's "startup object" via Project Properties.
1) Go to the Solution Explorer.
2) Right click the project and select Properties.
3) Select CommonProperties\General in the tree.
4) Select the Startup Object and click OK.
(Choose "Sub Main" if you want it to call your Main() function.)
You can place the Main() anywhere you want. In a Module or in a Class. It must be defined as Public and Shared (ie: static), just like how you would do it in C#.
Public Class Main
Public Shared Sub Main(ByVal CmdArgs() As String)
End Sub
End Class
|
|
|
|
|
Hi,
How do i get the maximum number of days in a month using DateTimePicker? and how to display the current Time with a format (ex. 10:00 am)... and how to get the number of days from the first date that i picked until to the last date (ex. From : 01/12/06 To 01/14/06) result 2 days ?
Pls i really need your help... thanks and more power...
Welbert
|
|
|
|
|
welbert wrote: How do i get the maximum number of days in a month
Date.DaysInMonth(theYear, theMonth)
welbert wrote: how to display the current Time with a format (ex. 10:00 am)
Set the following DateTimePicker properties in the designer...
Format = Custom
CustomFormat = h:mm tt
See MSDN for more formatting codes.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconstandarddatetimeformatstrings.asp[^]
welbert wrote: how to get the number of days from the first date that i picked until to the last date
Get the selected date and time from the picker like this...
Dim myDate As Date = myDateTimePicker.Value
Get the number of days like this...
myDate1.Subtract(myDate2).TotalDays
|
|
|
|
|
Thank you, Joshua.
I have done all, with no compiling and linking error, but still can't see the horizontal scrollbar.
I have a question, in the following statement,
fMax = fMax / Screen.TwipsPerPixelX
what's the relationship between screen.twipsperpixelx and the listbox?
I can only see the vertical scrollbar. How can I see the horizontal scrollbar there?
Joy Anne
|
|
|
|
|
Joy Anne wrote: Thank you, Joshua.
I'm glad I could help.
Just to let you know, you should be replying to my posts in your original thread instead of starting new threads. Otherwise you'll confuse others in this forum and I might miss your new thread. Let's just continue from this thread from now on.
Joy Anne wrote: what's the relationship between screen.twipsperpixelx and the listbox?
VB6's default screen units are twips, not pixels. These units are used to draw things onscreen. They're also used to place controls via Top, Left, Width, and Height properties. The Win32 libraries do everything in pixels. So, we must convert our measurements from twips to pixels before sending them to the Win32 library. In this case, we're sending these measurements via the SendMessage() call.
Joy Anne wrote: I can only see the vertical scrollbar. How can I see the horizontal scrollbar there?
That's odd. Are you calling the UpdateHorizontalScrollbar() method after you've added your strings to the ListBox?
|
|
|
|
|
Yes, I call the UpdateHorizontalScrollbar() method after I've added my strings to the ListBox.
I did debug inside the UpdateHorizontalScrollbar() and found the information there (such as lstCtrl.ListCount, lstCtrl.Style etc.) is correct.
But I can't see the Horizontal scrollbar there. Please have a look the code related to this issue.
Public lstCtrl As ListBox
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
(after I've added my strings to the ListBox)
Set lstCtrl = frmjoy.List3
Call UpdateHorizontalScrollbar
' Analyzes given listbox and displays a horizontal scroll bar if needed.
Public Sub UpdateHorizontalScrollbar()
Dim fMax As Single
Dim fValue As Single
Dim iIndex As Integer
' Get length of longest text in listbox.
fMax = 0
For iIndex = (lstCtrl.ListCount - 1) To 0 Step -1
fValue = lstCtrl.Parent.TextWidth(lstCtrl.List(iIndex))
If (fValue > fMax) Then fMax = fValue
Next
' Convert max text length to pixels.
fMax = fMax / Screen.TwipsPerPixelX
' Increase length for checkboxes and margins (in pixels).
If (1 = lstCtrl.Style) Then fMax = fMax + 13 ' Offset for checkbox.
fMax = fMax + 4 ' Offset for margins.
' Set horizontal scrollbar length.
SendMessage lstCtrl.hwnd, &H194, CLng(fMax) + 1, 0&
End Sub
Joy Anne
|
|
|
|
|
Hmm... the code looks right to me.
Another thing I should mention is that the horizontal scrollbar will not appear if all of the text fits inside the ListBox. It will only appear if the text exceeds the width.
Try giving your ListBox a HUGE string and see what happens.
If it still doesn't work, then as a test, try replacing fMax with 1000 in the SendMessage call. That should force it to appear too.
|
|
|
|
|
Hi,
I need control over a standard TWAIN scanner out of my application, StartScan and some settings, color/sw, resolution ...
Have anybody experience or some idea
Thanks
-- modified at 18:51 Wednesday 18th January, 2006
|
|
|
|