|
I can help out with one side of it. You can change the buttons on the toolbar by just calling LoadToolbar(ID) on it again. If you have 2 versions of your toolbar resource available for horizontal and vertical dock, you just need to call the LoadToolbar() with the correct ID on your toolbar object.
As for detecting the docking.... I will do a quick bit of research.
Roger Allen - Sonork 100.10016
If your dead and reading this, then you have no life!
|
|
|
|
|
If you override CFrameWnd::RecalcLayout in your CMainFrame clas, you should get a call here everytime the window is resized or the docking layout changes.
To see whether the toolbar is horizontal or vertically docked, my best suggestion is to get the rectangles of the 1st and 2nd items in the toolbar and see whether it is to the right (horizontal) or below (vertcal) to work out the docking state. Then if its different call LoadToolbar() with the correct resource ID to get the version of the toolbar you will need.
You will need at least the same 2 buttons in both toolbar resources for this to work.
Roger Allen - Sonork 100.10016
If your dead and reading this, then you have no life!
|
|
|
|
|
Thanx. I'm trying it now.
Do you know if there is any way to ask the toolbar the ID of it's loaded resource?
|
|
|
|
|
Hello again
Never mind my previous question. I just ask the toolbar for the index of the dropdown button that is only present in the compact version.
Almost everything works great, the only problem is that I need for the toolbar to recalculate its size when it becomes floating after it has been vertically docked. But I think I can figure this one out.
/jnks
|
|
|
|
|
I have a dialog window with a Tab Control. When I run the program the Tab Control is covering the text that should be a part of the Tab. If I call UpdateData(FALSE) two of the text controls are shown but not all of them. I'm can't find a way to send the Tab Control to the back of the frame or don't know if this is the problem. Any suggestions would be helpful.
Steve
|
|
|
|
|
Is it possible to buy a dvd or cd with all the CP MFC/c++ articles/demos/srcs?
Thanks,
ns
|
|
|
|
|
Ooohhh! Wouln't that be sweet!
Chris? Any plans?
I Dream of Absolute Zero
|
|
|
|
|
But then you'd never visit!
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Not true!!!
Its just that I have this awful thought that someday I'll try to come to the site and it will have vanished!!! I know I know --- its ridiculous...but there it is. The CD would just give me some peace of mind ya know! And we could buy new ones every 3-4 months with the updated and new articles....
I use CP articles etc all the time! I'd say 90% of what I've learned in programmming so far has been thanks to this site....
|
|
|
|
|
What happend to the TabCtrl?
I've tried to add a XP-style vertical TabCtrl in a litle application and was all amazed to get rubbish instead of a cool gui. Off course I added a mainfest and called InitComm... (you know what to do). But the tabs are drawn like horizontal tabs, though nicely placed and sized. No text on the tabs at all. The mouse interface still works fine, you even get hottracking, but of what use is that.
Than I sayed: I'l draw it myself! Bu Oh oh. After a troublesome time, scanning the 'Visual styles' documentation in the MSDN (which is by the way deep below MSDN standards in size and quality):
There are only style-definitions for vertical tab controls. Am I right or am I blind?
Someone must have seen this before. Please help!
( PS: I've just tried TCS_BOTTOM style -> )
|
|
|
|
|
XP Themes don't support vertical style tabs. Sorry.
--
Joel Lucsy
|
|
|
|
|
... and bottom tabs.
but thanks anyway
|
|
|
|
|
I think you forgot to include the implementation.
Are the implementation files (.cpp ) included in your project ? or if it's a lib, added to the lib include setting in the project setting;
Maximilien Lincourt
"Never underestimate the bandwidth of a station wagon filled with backup tapes." ("Computer Networks" by Andrew S Tannenbaum )
|
|
|
|
|
yup, thats it.
i was including the .h files, not the .cpp files.
everythings working now.
cheers.
btw, do you know any links where i can learn about the whole compiling/linking process, and how to create libraries etc.
thanks for your help,
henry
|
|
|
|
|
wht's the exact effect of the functions Escapecommunication(SETBRK) and Escapecommunication(CLRBRK) on serial port
can any one have an answer plz.....
adi
|
|
|
|
|
I haven't used the function (nor even seen it), but I do recall a lot about ancient communication methods. Modems using the Hayes AT command set used to have an escape pattern that would access the modem, rather than transmittting the data following it over the communication link. This was +++ and it was used issue commands. The BRK command interrupts the data flow until it is cleared. This is used when a buffer is full to prevent the opposite end of the connection from continuing the stream of data. Where did you run across this? Google and MSDN return nothing.
"Your village called - They're missing their idiot."
|
|
|
|
|
Hi,
this will probably make me sound stupid but here goes anyway.
I'm writing an application in plain old C++.
I have some classes that i'd want to use in this application, but also in other applications.
So i want to put these classes in a directory of their own.
In the property page of the project(i'm using .NET), in the "C/C++ - General" tab i've listed the directory of the classes in the "additional include categories" box.
I then #include the classes in my application.
Problem is that although my application sees the classes, it gives me errors saying it cannot find the functions in the classes.
What am i doing wrong???
thanks in advance for any help,
henry
|
|
|
|
|
did you include the headers ? with the right paths ? i.e. either with
#include "someHeader.h"
or
#include <someHeader.h>
and what errors do you get when compiling, link errors or compile errors ?
Maximilien Lincourt
"Never underestimate the bandwidth of a station wagon filled with backup tapes." ("Computer Networks" by Andrew S Tannenbaum )
|
|
|
|
|
yup, i include the two classes like this
#include <matrix.h>
#include <mvector.h>
im getting linker errors like the one below
glue.obj : error LNK2019: unresolved external symbol "public: __thiscall Matrix::~Matrix(void)" (??1Matrix@@QAE@XZ) referenced in function _main
The ~Matrix(void) function is declared and defined in the Matrix class.
any ideas??
|
|
|
|
|
Hallo,
has anyone an Idea or better an example for: "How to write a printer driver?". It would be nice if anyone can me sand a link or somthink.
The DDK is not very usefull for that .
Greetings
|
|
|
|
|
lol, the DDK is very useful and also completly useless!
the only way i know about is to fetch information from the DDK docs and the samples and do ur own thing... good luck
Don't try it, just do it!
|
|
|
|
|
In a method of an OCX, I start a thread. I want to fire an event of the control at the end of the thread. How can I start this event in the thread of the OCX? I cannot do a PostMessage because the control is not a window.
It seems to be an overkill to create a hidden window that would allow me to do so... Any idea?
|
|
|
|
|
I suspect this is a question to be answered in the COM forum. I think you should be able to marshal the pointer to the container's callback interface across to your worker thread, and then call it from there. COM should have created a proxy object for the thread which can perform the appropriate marshalling to get back onto the UI thread.
Look up CoMarshalInterThreadInterfaceInStream and the counterpart, CoGetInterfaceAndReleaseStream .
Note that I'm only guessing - I've never done this.
|
|
|
|
|
. I want to fire an event of the control at the end of the thread
If you really want to fire an event at the end of the thread, then it would be easier to just save args of your events and fire them on your main thread after secondary thread has finished.
Alternatively, of course you can use interface pointer marshaling and or GIT, however you will be faced then again with troubles of thread sync, because your windowless activeX doesn't have it's own message pump.
Therefore, I would suggest going with the hidden window, and I don't think it's overkill compared with interface pointer marshaling...
"...Ability to type is not enough to become a Programmer. Unless you type in VB. But then again you have to type really fast..."
Me
|
|
|
|
|
If you wanna fire an event at the end of your worker thread then the best thing is to monitor your thread execution status with GetExitCodeThread and fire the event directly from your control class. In order to do this you have to set the thread's autodelete member to FALSE.
This should do the job:
CWinThread* pThread = AfxBeginThread(...,CREATE_SUSPENDED);
pThread->m_bAutoDelete = FALSE;
pThread->ResumeThread();
DWORD dwExitCode;
while (TRUE)
{
GetExitCodeThread(pThread->m_hThread, dwExitCode);
if (dwExitCode != STILL_ACTIVE)
{
FireYourEvent();
break;
}
else
SleepABitAndPumpMessages();
}
Peter Molnar
|
|
|
|