|
(Sorry, I'm cross posting this to both the VB and C++ forums as it covers both).
I have a common problem - I need to show the modeless forms which reside in a VB ActiveX Dll, called from an MFC client app.
I know that it isn't possible to show a modeless form in a VB ActiveX DLL (unless VB itself is also the client), because the modeless form needs to hook into a message loop to receive windows messages. The MSDN docs state that VB looks for something called the 'component manager' on the client to hook into which MFC doesn't provide.
Has anyone worked out how to get around this? Is is possible to mimic the functionality of the component manager in the client app, or at least the parts the modeless form is looking for? What is the myterious interace the VB is looking for? Am I on a hiding to nothing here?
Thanks
|
|
|
|
|
Does anyone know how I might extract sets of duplicates from an excel spreadsheet and then insert extra rows around them?
I have an excel spreadhsheet with sets of rows with one cell that may be the same account no as another cell. When I sort them I have say sets of three or four or five rows all with one cell the same. Eg cell d is a unique account no ref. So I might have a number of the same account no in the sheet and on sorting they are all together. Next I would like to put a blank row above and below the duplicate group , then I would like to auto sum one of their columns for each set of duplicates. In this way I can get a net balance for lots of sets of the same ref no.
Anyone any ideas?
thanks
|
|
|
|
|
Hi All.
I´ve create a dual interface in VC++ with this method "void SegundoError([out] BSTR my_string)" in the events interface and with its corresponding Fire in the CProxi class. In VB I´ve capture this event: "MiInterface.SegundoError(ByVal string_from_VC As String" and the problem is that "string_from_VC" arrives empty. Cuold tell me someone what I´m doing wrong?
Thanks
|
|
|
|
|
Why did you define your string as [out]?
Who is providing the string VB or VC?
* if your string is defined in VB and you want to view it in VC, use [in]
* if your string is returned to VB, then you should use [out] BSTR * pbstrOut
Can you give me more details, please!
Did you create your VC++ object using ATL?
How do you create an instance inside VB?
What is the code that you have in your VC++ function?
You should realize that BSTRs are not like LPTSTR or TCHAR *
so, inside your SegundoError:
SegundoError(BSTR my_string)
{
USESCONVERSION;
LPCTSTR psz = W2T(my_string);
printf("String is : %s", psz);
}
Mh2!
|
|
|
|
|
If you are trying to pass a string out from VC to VB using a connection point, the IDL should be
[in]BSTR my_string
Michael
|
|
|
|
|
Your method is "void SegundoError([out] BSTR my_string)"
[out] parameters must always be pointers, so your method should be
method: "void SegundoError([out] BSTR *my_string)"
Hope it helps!
|
|
|
|
|
Hi:
I´ve define a dual interface with connection points in VC++, and I want to send data to VB, but I don´t know what have to put in VB to finish the connection. Cuold someone help me? I would grateful if you would send me an example code. Thanks.
|
|
|
|
|
I am writing a program to customize your desktop using the Windows Plus! Settings. The only way I could find to do so is to change the registry settings manually and then do a ChangeDisplaySettings with CDS_UPDATEREGISTRY as a flag.
This 'tricks' the settings into being active. There's got to be a better way to do this! Anyone know how to change these settings more efficiently? Does there exist an API that allows you to refresh your display without making a "ChangeDisplaySettings" type change?
OS: Windows NT
Thanks!
|
|
|
|
|
I have a MDI application, I like to know if I have to use DIB to display bitmaps..??
or is there another way?
Thank you
Ehsan
Ehsan Behboudi
|
|
|
|
|
If you mean you're trying to place a bitmap on the MDI parent, then you need to place a picture box first and then load the bitmap into it!
|
|
|
|
|
Does anyone know how to enable multiple lines in an inputbox please?
I'd like to ask the user to input an address and then put it into everal lines of an excel worksheet as you'd expect to see an address on an address label.
eg
Street
Town
COunty
PostCode
CHeers
Ian
|
|
|
|
|
Create your input box on the form. select the input box, go to the properties window for the control and scroll down the alphabetical list until you find MultiLine and set the value to True.
Cheers,
-Erik
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
My thoughts are my own and reflect on no other.
|
|
|
|
|
Trouble is I am using pop up boxes for user input that appear in a defined sequence.
This is the code I am using
accno = Application.InputBox(Prompt:="Enter account number", Default:="1234567", Type:=1)
Is it possible to do the same in another way and still guide the user through the form?
thanks
|
|
|
|
|
Use the same form (or instances of the same form). Forms are classes and can be created just like anything else. You can have an array of VB.Form object instances if you want.
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
I want to write a progam by Visual basic that can run behide another active program (such as Word 97)and can capture the keycode each time the user hit it. I don't know the technique for that and I wish to receive any suggestion.
Thank you very much.
Tran Duy An
|
|
|
|
|
Ban co the doc trong MSDN phan cua VB, no giai kha ro ve viec nay ! Chuc may man, bye
|
|
|
|
|
You need to install a system wide hook. See SetWindowsHookEx API in MSDN
Mh2!
|
|
|
|
|
Try searching for vb sample projects called KeyLogger.
The works are pretty much the same.
|
|
|
|
|
The purpose is to make a form in outlook containing a command button to print the form to a pre-defined printer.
Is there a function or method in VB scripting or VBA which can be triggered by a command button and causes the form to be printed to a predefined printer (cause its a fax-printer) without letting the user be aware of this choise?
Thank you for taking the time.
Regards,
Dominic Steur.
dsteur@sax-sanitair.be
|
|
|
|
|
Iam trying to create a simple activeX control for the web using Vb. It connects to a backend access database. I have the following code segment that is giving me an error
ConString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=STV250.mdb" & _
"DefaultDir=D:\Inetpub\wwwroot\MastersProject\Inventory;"
objConn.Open ConString
The error being:
[ADO Error # -2147467259
Description [Microsoft][ODBC Microsoft Access 97 Driver] '(unknown)'
isn't a valid path. Make sure that the path name is
spelled correctly and that you are connected to the server
on which the file resides.
Source Microsoft OLE DB Provider for ODBC Drivers]
However if I use,
ConString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=D:\Inetpub\wwwroot\MastersProject\Inventory\STV250.mdb"
objConn.Open ConString
it works fine. That is after I create the .CAB file and embed it in an asp page. But it works only on the computer that houses the webserver and the .OCX/.CAB files.
If I try accessing it from another machine, I get the
ADO Error # -2147467259 again.
I have used the same code for numerous ASP pages and had no problems. But it just refuses to work for the ActiveX control. Could someone please help?
|
|
|
|
|
Can anyone tell me how I can use vba to claculate the number of weeks between two dates please?
I have an excel spreadsheet where the user is prompted to enter a start date and an end date via two input boxes:
duedate = Application.InputBox(Prompt:="Enter first charge date This must be a Monday's date", Default:="02-04-01:", Type:=0)
todate = Application.InputBox(Prompt:="Enter last charge date if different from end of year ", Default:="25-03-01:", Type:=0)
What I would like is to be able to return the number of weeks to another variable say called mult. Then to use this multiplier in a further function.
To complicate matters further I then need to calculate how many of a particular day of a month are in each of the months between the two dates. The day of the month is also requested via an input box as above and held in the variable daymon
To complicate it even further I somehow need to restrict the entries in the first two input boxes to be dates and to be Monday's.
This is so I can create a spreadsheet that tells calculates a weekly charge and then makes it into a monthly payment schedule.
Thanks in advance
Ian
|
|
|
|
|
This seems to work (below) but does anyone know how to return the day of the week. I need to return the date of the next Monday after the current date when the code is ran.
fred = DateDiff("w", duedate, todate)
ActiveSheet.Cells(27, 5).Value = fred + 1
eric = DateDiff("m", duedate, todate)
ActiveSheet.Cells(27, 9).Value = eric + 1
the plus 1 is required as it always returns one week or month less.
Don't suppose anyone knows how to return the day of the week?
I need to make it find the date of the Monday following today's date (today being whatever the date is when the code is ran???
|
|
|
|
|
Here's some code to work with, hope it helps.
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Now)
If Weekday(datTemp) = vbMonday Then
MsgBox "Next Monday will be " & datTemp
End If
Next
Andy Gaskell, MCSD
|
|
|
|
|
That's superb thanks - I am using it like this
(Do you know how I can just return the date and not the time too???)
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Now)
If Weekday(datTemp) = vbMonday Then
ActiveSheet.Cells(87, 3).Value = datTemp
End If
Next
Do you know how I can return the last Monday in March 2002?
Also any idea how I could do a similar thing with months? Eg to return the next 15th of a month or whatever date the user specifies. Ie if on 17th of June the user wants to return the next 15th of the month it will give 15th July, but if on 14th July the user specifies the 15th it will give the 15th of July.
|
|
|
|
|
This works but I am open to simpler suggestions
Dim TheDate As Date ' Declare variables.
Dim Msg
Dim hey
Dim Ms
Dim instal
Dim instmon
Dim mon
TheDate = Date
Msg = DatePart("m", TheDate) ' Msg now equals the number current month number
dayDate = Date
Ms = DatePart("d", dayDate) 'Ms now equals the current day number
If Ms >= 8 Then
Msg = Msg + 1
End If
instal = 15 & "th "
If Msg = 1 Then
mon = "January"
End If
If Msg = 2 Then
mon = "February"
End If
If Msg = 3 Then
mon = "March"
End If
If Msg = 4 Then
mon = "April"
End If
If Msg = 5 Then
mon = "May"
End If
If Msg = 6 Then
mon = "June"
End If
If Msg = 7 Then
mon = "July"
End If
If Msg = 8 Then
mon = "August"
End If
If Msg = 9 Then
mon = "September"
End If
If Msg = 10 Then
mon = "October"
End If
If Msg = 11 Then
mon = "November"
End If
If Msg = 12 Then
mon = "December"
End If
ActiveSheet.Cells(87, 3).Value = instal & mon
ActiveSheet.Cells(87, 4).Value = "monthly"
ActiveSheet.Cells(88, 3).Value = "15-03-02"
Else
If freq = "weekly" Then
ActiveSheet.Cells(31, 2).Value = (ActiveSheet.Cells(29, 8).Value) / (fred + 1)
ActiveSheet.Cells(31, 1).Value = (("Less " & fred + 1) & " payments @")
ActiveSheet.Cells(31, 8).Value = (ActiveSheet.Cells(31, 2).Value) * (fred + 1)
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Date)
If Weekday(datTemp) = vbMonday Then
ActiveSheet.Cells(87, 3).Value = datTemp
ActiveSheet.Cells(87, 4).Value = "weekly"
ActiveSheet.Cells(88, 3).Value = "25-03-02"
'MsgBox "Next Monday will be " & datTemp
End If
Next
|
|
|
|