|
I'm not sure exactly what you're after, but if you look at article: Generic Picker Dropdown Control[^], I imitate a combobox.
You could override the OnKillFocus handler (or remove it), and you'd get a menu-a-like window that doesn't get dismissed.
Or you could go straight with my base CGenericPicker class, and derived your own special drop down.
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
What I'm after it to stop CMFCPopupMenu from getting left button click messages, and handle those messages myself.
|
|
|
|
|
I found out how to do it:
Inherit CMFCPopupMenuBar and handle the button clicks there. In my inherited CMFCDropDownListBox I override GetMenuBar and returns an instance of my inherited CMFCPopupMenuBar class.
|
|
|
|
|
Glad you've solved your own problem - always the best learning experience that way!
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Hi, in my application I set the parent of a button to a static control. After I set the owner (setowner) to the parent of the static (the main window) in order to process messages sent when clicking on the button. The problem is that the function OnButtonClicked() is never called when I click on the button.
I did the same thing with a list control, but it works with it.
I don't know how to fix this bug. Any Idea?
Thanks
|
|
|
|
|
I would suggest making a button a child of a static is a bug in itself, but...
Try using spy++ and seeing where the WM_LBUTTONDOWN / BN_CLICKED message(s) get routed. If they disappear into the static control, try adding the SS_NOTIFY style.
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Hi, in fact it's due to the splitter class I'm using. CSSplitter which isn't derived from CSplitterWnd but made thanks to a static control. Then I added my button to that control and I had to set the parent to the splitter control. I hadn't really the choice.
I succeeded in solving the bug by adding a message event in MESSAGE_MAP of the class. Then I call SendMessage to call the corresponding function with the parent.
Thanks for your help,
|
|
|
|
|
That sounds like a perfectly good solution to me!
I can understand wanting to let windows do the heavy lifting, but if it does it "wrong"...
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Where do I find a full reference (and possible Tutorial) on the Writing of an Installation Script, acceptable to Windows Installer.
Bram van Kampen
|
|
|
|
|
|
Functions exist, MoveTo(x,y) or LineTo(x,y) to draw or move to coordinate points in MFC. Are there also functions to MoveTo or LineTo in 3D? I.E. MoveTo(x,y,z) or LineTo(x,y,z)? Please let me know.
Sid
|
|
|
|
|
Nope, you've to use a 3D library, like, for instance OpenGL or Direct3D .
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi
I found a macro "MAKEINTRESOURCE" to convert resource id to resource name. Is there any way to convert resource name to resource id?
Thanks,
|
|
|
|
|
transoft wrote: MAKEINTRESOURCE
Doesn't really convert anything...IIRC, Windows treats any resource name (i.e. character pointer) with a zero high-order word as an integer rather than a string. That's all.
Basically, a resource can be specified with a name OR an integer id. The only difference (as I said) is whether the high-order word is zero or not.
So conversion of resource name to id is completely meaningless, really.
I suppose something like the code below is the closest you could get
int IsResourceNameInt(LPCTSTR resourceName)
{
return ((int)resourceName&0xffff) == ((int)resourceName)?(int)resourceName:-1;
}
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hello,
In my application I have buttons over a static control used to display a background image. The problem is when the window needs to be resized, the controls are not drawn simultaneously, so the controls are flickering. For instance the background image is drawn, and only after controls and it's quite annoying, resulting in a sort of flashing app when resizing.
I tried to use SetRedraw(0) and SetRedraw at the beggining and the end of the function but it doesn't work either.
LockWindowUpdate doesn't work too.
Have you got any solution for that ?
Thanks in advance.
|
|
|
|
|
Did you try "CMemDC" class?
|
|
|
|
|
I use a library for the gui that I can't modify, so I can't use CmemDC. (dskinlite)
|
|
|
|
|
Hi Netc. How about making the buttons child controls of your static and give the static control the style WS_CLIPCHILDREN , would that work? For more background see KB79981[^].
/M
|
|
|
|
|
I have my application run with gflags with Pageheap enabled to track down the page heap corruption.
Now the application has crashed and it shows this error, i could not interpret these lines (other than having a feeel of resource inavailablity)
Can anyone throw a light on what exactly is the reason that has caused the carsh of the app.
[info : Application is a multithreaded one about 500 threads running,in a multi - processor machine)
kernel32!RaiseException+53
msvcrt!_CxxThrowException+36
mfc42u!AfxThrowResourceException+19
mfc42u!AfxRegisterWndClass+ab
mfc42u!CAsyncSocket::AttachHandle+5c
mfc42u!CAsyncSocket::Socket+25
mfc42u!CAsyncSocket::Create+14
Pls help
|
|
|
|
|
Elsie wrote: Application is a multithreaded one about 500 threads running
Do not use CSocket, consider using CAsyncSocket if it has to be MFC based. Also see CSocket considered harmful[^] in the Winsock Programmer's FAQ.
/M
|
|
|
|
|
Hi Guys,
This same problem has driven me nuts but finally i fixed it and it is working. This is bug with MFC socket library that when inside a thread [other than main application thread], If we try to do something like
CSocket socket;<br />
socket.Create();
It will throws an unhandled exception. I found an article on it See What Microsoft says about this
that said something from Microsoft but that did not help me either. So here is a workaround i have found and i hope it can help some frustrated fellow like me.
Inside thread, do this
CSocket mySock;<br />
SOCKET sockethandle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
mySock.m_hSocket= sockethandle;
After that DO NOT call mySock.Create as it has been created already through assignment of socket handle. I am not sure if we can use mySock.Attach(sockethandle) as i did not try it yet.
After that you can call Connect etc directly.
When you are done using the socket, DO NOT call
<code></code>mySock.Close() - rather call
closesocket(mySock.m_hSocket); And that will free the socket object. If Attach works in above case then i guess we need to do Detach here when to free the socket.
Good Luck
Nauman Khan
|
|
|
|
|
#include<iostream.h>
class abc
{
int a;
public:
abc(){a=5;}
~abc(){}
};
void my_func()
{
abc obj;
}
void main()
{
my_func();
getch();
}
Question: Whenever an object is created, memory will be allocated for the data "int a;".
Will a destructor, with an empty body, deallocate the memory taken for the object when the object goes out of scope??
Is it our job to include the memory deallocation functions inside the destructor body?
|
|
|
|
|
Gjm wrote: Will a destructor, with an empty body, deallocate the memory taken for the object when the object goes out of scope??
Any destructor will call the destructor of any child object when it completes.
It will not (and cannot) deallocate the memory taken by the object. What if the object's on the stack? No deallocation needed!
If you want to automatically handle object memory management, use smart[^] pointers[^].
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
The Destructor Mechanism is an Opportunity for you, the programmer, to do some cleanup when an object falls out of scope. By default, thre Default Destructor does nothing!! (a Misses Opportunity if you did not use it when you needed it!). The Main use of the destructor is to release memory pointers first allocated to class members. (But, you HAVE to write the Code to do thids!) Typical of the way I use this would be, Set the Pointer to NULL in the Constructor, Set it to a Value n a method that Allocates to the member pointer, and use 'free' on All pointers in the Destructors. If the pointer was not used, it would still be NULL. You can free a NULL pointer benignly!
Bram van Kampen
|
|
|
|
|
As has been sortof explained, the destructor is your chance to tidy up. But the memory taken by your object is tidied AFTER the destructor is finished.
That's because your object could have been created with new , or on the stack. Either way, the freeing of memory taken by a is done for you.
main ()
{
abc blah;
;
;
}
main ()
{
abc *pBlah = new abc;
;
;
delete pBlah;
}
So far, there's no point in a destructor. The constructor could at set a to 0.
Where it is useful, is if (eg) a is a pointer. The memory taken by the pointer is auto-freed, but not the memory /object *it* pointed to.
Now, go back to the book!
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|