|
I got the 'Illegal Operation' message when I move the mouse pointer over my toolbar. I get an 'Access Violation' message and a file named 'Disassembly' pops up upon debug. What kind of conflict am I dealing with here? Thx.
ralf.riedel@usm.edu
|
|
|
|
|
How do I get information from a dropdown menu (from html page in CHtmlView) to a variable in my c++ application?? I have searched all over and need some help.
(Developing in MSC++6.0 sp5 & IE6.0)
|
|
|
|
|
Hopefully you are comfortable with COM because this requires you to do a lot of interface navigation. You will need to dig down into the HTMLDom and access the particaly HTML Element that you are interested in.
The basic idea is to start with the IWebBrowser2 itnerface from your CHtmlView, then get the IHTMLDocument from the browser interface.
Next cycle through all of the Child elements until you find the menu you are interested in.
Once you have that you should be able to access the elements of that menu for the data you are interested in.
Good Luck!
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
The basic way to do this is to use the COM interface exposed by the WebBrowser control and find the element you are interested in and interogate its properties.
Another way this can be done is to have an onchange event for the drop down that redirects to a URL like customstuff:myvar=1 type of thing. Then in your CHtmlView class you can overide the OnBeforeNavigate2 (maybe OnBeforeNavigate??) function and check for the customstuff: prefix and set your variable accordingly. Remember to cancel the navigate, of course.
Another way is to use the wonderful DHTML UI library provided by Ted Crow. (http://www.codeproject.com/useritems/dhtmlui.asp). This library will allow you to expose your applications object model to the HTML windows being displayed though the window.external property.
|
|
|
|
|
I have a program that i want to organize mp3's with. But, i've come to a place where i need to store a path for every item in a ListView control, so when i add some new items to the list, the pathlist gets larger and i can retrieve the path somehow.
What would be the best solution?
Thanks
|
|
|
|
|
Are you talking about retrieving the path pragmatically in your program, or visually to the user.
If you are talking about pragmatically, have you tried associating the data with each element in your list view?
You can either just associate the path string with each item, or you could create a structure that contains any amount of data that you want and set the pointer to the structure in teh user data of the list view item.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
How do i assign a path to each item?
|
|
|
|
|
// when you add items into the listctrl you set the item data
m_lstMyList.InsertItem(1,"ItemName");
m_lstMyList.SetItemData(1,(DWORD)"ItemPath");
// when you want to get the item data just use GetItemData(nPos)
CString strTemp;
strTemp = m_lstMyList.GetItemData(1);
hope that helps
-dz
|
|
|
|
|
WHat if i haven't created it with MFC? I have designed the app in a resource file but i add items via api's. ANd also, i don't want that value to be a visible item, jsut somethingi can retrieve when i want to.
|
|
|
|
|
If you are using the Win32 API, then you will simply update the LVITEM structure that you have used to set into the list view. You can set the lParam parameters of this structure.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
|
If you are using the Win32 API, then you will simply update the LVITEM structure that you have used to set into the list view. You can set the lParam parameters of this structure.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
|
hi
this may be really dumb but here goes...
i have taken bits from norm almonds iocp server stuff and turned it into a console app (my servers need it to be this way apparently) and it seems to work ... not too tough so no applause yet please -
now ... a gui app sits there doing its thing until the user clicks 'exit' ... but a console app goes thru the main() stuff and exits ... geee lauren did you work all that out by yourself?
how do i make it loop forever without using while(1 ==1) or whatever so that it doesnt use 100% processor time?
herb-farming in new mexico? is it my time now?
"... and so i said to him ... if it don't dance and you can't eat it either f**k it or throw it away" sonork: 100.18128 8028finder.com
|
|
|
|
|
You still have access to the synchronization functions like WaitForSingleObject . So if there is some sort of event that you can set to wake up your thread that would be the best solution. The types of objects you can use are:
- Change notification
- Console input
- Event
- Job
- Mutex
- Process
- Semaphore
- Thread
- Waitable timer
You can also set a timeout value so that your thread wakes up automatically if the timeout expires. Just remember to include Windows.h if you want to go this route.
Or you could simply tell your program to sleep, but that still takes up a lot of processing power depending on how long you tell your app to sleep.
Good Luck!
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
while (true)
{
SleepEx(1000000, true);
}
(The easy way)
Then it's also alertable
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
I would implement this as a service - not a conslole app. This way you could use SCM to stop your service easily.
I vote pro drink
|
|
|
|
|
|
I have a dialog app that I set the font to 14 pt on all the windows.
How do I change the menu font to make it the same or larger than the dialog windows?
Thanks!
|
|
|
|
|
The font of the menu is determined by the system settings, and the actual menu window is as system window, so there is no way to simply set the font of a menu short of changing the systems settings.
Therefore you will have to create an owner drawn menu in order to get the font to appear the way that you want.
Another possible way to do this is to create bitmaps at runtime when your dialog is created that contian the font and the size of the menu that you want, and assign these bitmaps to the menu. That way you only need to do a little bit of setup work when you window is created rather than getting into the messy owner drawn menus. I think this would be the easiest solution, and there is an example in Charles Petzolds Programming Windows book.
Good Luck!
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
In MFC there is an easy to get access to CMainFrame and call its methods from anywhere in the application. Just by simply doing this...
CMainFrame pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->MyFunction(...);
Although in WTL there is method GetTopLevelWindow() that can be used to get access to Top Application Window, but there seems to be no way to cast the return CWindow type to CMainFrame. Take for instance the following...
CMainFrame frm = (CMainFrame)GetTopLevelWindow();
frm.MyFunction(...);
... will not work, as there seems to be no way to cast ATL::CWindow to CMainFrame.
THE QUESTION!!
How would one go about calling CMainFrame method from anywhere in the WTL application (say from distant dialog box)? Without using global variable to store pointer to CMainFrame?
Is there such way? Or am I just dreaming
Thanks in advance
Mike M
|
|
|
|
|
Mike.NET wrote:
Is there such way? Or am I just dreaming
But there are things that you can do to get around this.
When you call this in MFC:
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
it is returning a pointer to the window that is stored as a member variable inside of the app object.
You could either mimick this behaviour by creating your own app module that derives from CAppModule, and stores this member variable.
Since GetTopLevelWindow only returns a HWND there is no way to cast this handle to a CWindow object without creating a completely new instance of the object. The next best thing that you could do is store a pointer to the CWindow, (or CMainFrame) object in the user data field of the window.
That way you could do this to get the pointer that you are interested in:
HWND hWnd = GetTopLevelWindow();
CMainFrame *mainFrm = dynamic_cast<CMainFrame*>(::GetWindowLong(hWnd, GWL_USERDATA);
if (NULL == mainFrm)
{
}
mainFrm->MyFunction(...);
Good Luck!
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
I am trying to find a way to only display the Context Sensitive '?' button in a dialog/property sheet - I don't want the 'X' Cancel button to be displayed.
When I Call this sequence...
ModifyStyleEx(0, WS_EX_CONTEXTHELP); // Add The Context Help '?'
ModifyStyle(WS_SYSMENU, 0); // Remove system menu to get rid of the 'X'
..it first adds the '?' to the menu, and then secondly removes the menu. This results in neither the '?' nor the 'X' being displayed.
This is the only way I know of to remove the 'X' from the menu - is there a way to have it display the '?' but not the 'X', or am I stuck here?
If I am stuck, my second alternative is to find a way to disable the 'X' (grey it out) so that it is not clickable... any ideas on how I go about doing that?
If you have any ideas on one of both of these solutions, please let me know.
|
|
|
|
|
Call GetSystemMenu on your window.
Then you can call DeleteMenu on the close menu item with the SC_CLOSE ID.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
Beautiful - thank you for the backup workaround for my problem!
It greys out the 'X' just fine, allowing the '?' to be displayed.
Hopefully there's a way to hide the 'X' altogether though, I'd much prefer that.
: Dean 'Karnatos' Michaud
|
|
|
|