|
Allad wrote: I'm writing a network application and I need to retrieve informations about network computers : MAC address, Host Name, IP, shared resources...
look for IPhelper apis
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
I have a window or dialog box (class derives from CFormView) that needs to be updated when the mouse is clicking on any of the items in the menu bar or when the focus leaves the dialog box. There are two cases:
(1) When there are other child windows open in the app, is there an OnKillFocus that I can call to do the update?
(2) Also, when the window is the only open window in the application, and the user selects a menu item, KillFocus will not work since it's still the active window. How do I know the focus is now on the menu bar?
Thanks!
|
|
|
|
|
Call CWnd::UpdateDialogControls and it will process all OnUpdate messages for your window.
John
|
|
|
|
|
Hi.
<small>How do I know the focus is now on the menu bar?</small>
you can do a WM_NCHITTEST Notification it returns a ,HTMENU if its on a menu ,( the DefWindowProc function returns that ) if its an HTMENU you can do your concerned work ,i guess this might help you.
Regards
FarPointer.
|
|
|
|
|
I have a small problem that I cannot find concerning GetItemDataPtr/SetItemDataPtr for the ComboBox.
I do something like this to insert an item :
void MyCombo::InsertString( MyPointer* pMyPointer )
{
int iIndex = AddString( pMyPointer ->name );
SetItemDataPtr( iIndex, pMyPointer );
}
and this to get the data.
/// p is a struct that also contains a name
MyPointer* MyCombo::InsertString( int iIndex )
{
MyPointer* p = ( MyPointer*) GetItemDataPtr( iIndex );
}
at this point, the pointer in the combobox is invalid ( 0x00000001 )
I'm not certain where to start looking for clue to why this happens.
Thanks for info, tips, insights.
Max.
Edit :
Ok, Found the problem, someone else is doing a SetItemData somewhere else, and overwrites the pointer !!!!
Maximilien Lincourt
Your Head A Splode - Strong Bad
-- modified at 13:33 Friday 13th January, 2006
|
|
|
|
|
I am getting data from a database via CDaoRecordset. The data is coming back in a COleVariant from which I am reading it. However some of the fields in the database are empty which means the COleVariant is also empty. When I try to read an empty COleVariant the program crashes. This occurs when I try to convert the data to a string or date etc.
CString vData;
COleVariant vVarData;
vData = V_BSTRT(&vVarData); //crashes here if the string is empty!!
This works perfectly if the database field and thus the COleVariant is not empty. Does anybody know how to detect an empty COleVariant before trying to actually read it?
Your help would be appreciated
Dave Collins
|
|
|
|
|
You should be checking the type of the underlying VARIANT object to see if its type is VT_EMPTY or not. You can use the V_VT macro for this.
IMHO, you should be validating the type of the VARIANT before trying to obtain its value.
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Tip for new SUV drivers: Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
If you're using the V_BSTRT macro to access the data you should check that the data in the variant is actually a BSTR using the V_VT macro, like this:
<code>if ( V_VT(&vVarData) == VT_BSTR )
{
CString vData = V_BSTRT(&vVarData)
}
else
{
}
If you use it as a BSTR when it's not you're effectiely doing a cast. For example, if the variant contains data of type VT_I4 and you treat it as a BSTR something this like is happening:
<code>UINT i = 4;
CString s = reinterpret_cast<BSTR>(i)
Which would be bad.
Steve
|
|
|
|
|
Hi Guys
Thanks for the advice
I tried validating using VT_Empty but discovered that the COleVariant was coming through with the vt value set to VT_NULL. By checking for both VT_EMPTY and VT_NULL I can manage the reading fo the data in a sensible way.
Also thanks for the comment about checking that the varinat is BSTR - I have added this to my code. One day I will grow up to be a real programmer!!
Cheers Guys - Hope I can return the help one day...
Dave Collins
|
|
|
|
|
How can i detect that a flash movie has finished/completed in shockwave flash control,so that i can load a new movie?
thanx in Advance..
for those who dont know that how it is related to VC,the answer is i am using shockwave object in vc,so i need to handle it in vc.
zubair ahmed
-- modified at 23:36 Friday 13th January, 2006
|
|
|
|
|
zubair_ahmed wrote: How can i detect that a flash movie has finished/completed in shockwave flash control,so that i can load a new movie?
thanx in Advance..
How is this related to VC++?
-Prakash
|
|
|
|
|
Mr.Prakash wrote: How is this related to VC++?
I don't know, maybe there's a callback from the activeX control that says if the movie has finished playing ?
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Maximilien wrote: I don't know
its obvious, coz he has the problem
-Prakash
|
|
|
|
|
Still to get an answer.
Z.A
|
|
|
|
|
It's an ActiveX control so I'd use the OLE viewer that comes with visual studio to have a peek at its type library. Look for out going interfaces. Once you find the correct out going method (assuming one exists) you'll probably have to use connection points to hook up your sink (which ypu'll have to implement). How you do this will depend to what libraries you using (or not using). e.g. ATL and MFC have different ways of going about this.
Steve
|
|
|
|
|
hi,
i m facing prblm while opening an url through mfc. i wanna open one exixsting webpage (say http://www.msn.com) on one button click. i have used OpenURL method of MFC. Its returning success. But the webpage is not opening. i wanna know what exactly i should do to open the webpage also.
|
|
|
|
|
you can use ShellExecute
something like :
::ShellExecute(AfxGetMainWnd()->GetSafeHwnd(), "open", "http://www.msn.com", NULL, NULL, SW_SHOW);
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Aryan S wrote: i have used OpenURL method of MFC. Its returning success.
OpenUrl method of which class CInternetSession or CHtmlEditDoc.. if you are using CInternetSession, then it will give you pointer to file of webpage..
or if you using CHtmlEditDoc one, then you need a View derived with same in your project
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Hi,
how can i place around 500 controls simultaneously on a single Dialog?
Any idea?
Thanks in advance.
Anish.
|
|
|
|
|
you can, but you won't be able to place all of them at design, because the editor is limiting you.
add the additionnal controls it at runtime...
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
AnsGe wrote: 500 controls simultaneously on a single Dialog?
OMG, I hope that I will never use your application.
but on a more serious note, explain what you want to do, maybe there are better ways that we could suggest.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Maximilien wrote: OMG, I hope that I will never use your application.
LMAO
You have an apple and me too. We exchange those and We have an apple each.
You have an idea and me too. We exchange those and We have two ideas each.
|
|
|
|
|
I think you could:
1- Create the controls dynamically with pre-defined ID's.
2- Create a few child dialogs, each having a couple hundred controls.
3- Edit the .RC file, and add them manually.
4- Some other way.
Why?
this is this.
|
|
|
|
|
Here's a fragment of code from a dialog I wrote earlier:
Declare some controls
CStatic m_txtLabelIn [ 500 ];
And create them with any arbitrary size for now
for (i = 0; i < sizeof(m_txtLabelIn) / sizeof(m_txtLabelIn[0]); i++)
m_txtLabelIn[i].Create("", SS_LEFTNOWORDWRAP, rect, this);
and then do a SetWindowPosition on each one to put them where you want them. (You ARE sure they will all fit the space available?)
Shraddhan
|
|
|
|
|
No I am not sure that they all will fit on one dialog. If you are using it maximized with screen resolutions 1024 x 768, then maybe it is possible.
Actually it all depends on the size of individual controls, and what you choose to put in them, like text, icons, images etc.
Suggestion:
You should rather use a property sheet with a few property pages in it. That way, you can put fewer controls on each page, and it would be easier to create and use, and would fit in a smaller screen area.
Now about your code:
CStatic m_Static[500];
CStatic* m_pStatic;<br />
m_pStatic = new CStatic[500];
However, I strongly recommend using property sheet and pages.
this is this.
|
|
|
|