|
Firstly
TCHAR rootPath[MAX_PATH];
BROWSEINFO bi;
LPITEMIDLIST pidl;
LPMALLOC pMalloc;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))
{
ZeroMemory(&bi,sizeof(bi));
bi.hwndOwner = NULL;
bi.pszDisplayName = 0;
bi.pidlRoot = 0;
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
pidl = SHBrowseForFolder(&bi);
if (pidl)
{
if (SHGetPathFromIDList(pidl,rootPathOfRip))
{
m_startDir = rootPath;
UpdateData(FALSE);
}
pMalloc->Free(pidl);
pMalloc->Release();
}
}
Thats the code I've used before for using the SHBrowseForFolder before and its seemed to work. Give that a quick try to see if it works, changing the variables and stuff of course. Other than that you could try doing a Step Into debug of it to see where it really craps out. Post back with more details if you can.
|
|
|
|
|
It works perfectly fine (well, the m_startDir is not defined and rootPathOfRip is rootPath , but i guess that's the cut&paste ), thanks a lot. Maybe you should mail this one to Mike, so that he gives it as example in the FAQ, because i do not think it is trivial.
~RaGE();
|
|
|
|
|
I have a rebar with a checkbox (all to br created in code). To make the view catch the message when the box is checked, the book said to add:
afx_msg void OnClick;
There was no association of this messagehandler with the object that emitted it. So I guess I was wondering if I had two checkboxes and wanted two different functions to run when they are checked, how would it know which one to run if I just do the afx_msg OnClick1 and OnClick2.
I note that when you write a handler for clicking a real button drawn from the toolbox onto a CFormView, the code generated by Visual Studio does associate the emitter of the messsage when it adds the relevant code. But here in this example from the book there is no such code to be added where the checkbox is associated with the clicked message.
HOpe its clear - my confusion.
Thanks
Appreciate your help,
ns
|
|
|
|
|
Why are my MFC toolbars very very UGLY?
They use some who-knows-what colours always.
In every other app, the toolbar is a fine gray/what my theme is, but in my app... it's some ugly white on the left(the grabbing thingy?) and rest some grey, but with another theme(darkish), its some weird looking dark grey with a VERY white on the left, but other programs are a good looking light gray(except the funky-toolbar ones of course)
|
|
|
|
|
Dear All, I have created buttons inside the list ctrl. First of all tell me the approach that I have followed is correct??.
Secondly, I have created Successfully but due to the header resizing option I am facing the button redrawing problem. As when the horizontal scroll is used the buttons are creating problem.
is there is any one help???
Natasha
Software Engineer.
|
|
|
|
|
Hello,
I am declaring a class within another class. In VC 7.0 the inner class has access to protected members of the enclosing class, but in VC 6.0 it does not. Here is the example:
#include <iostream>
class Big
{
protected:
static const int CONST_VALUE;
class Inner
{
public:
Inner ();
int x;
};
public:
Inner in;
};
const int Big::CONST_VALUE = 2;
Big::Inner::Inner ()
{
x = Big::CONST_VALUE;
}
int main ()
{
Big big;
std::cout << big.in.x;
}
Can anyone tell me if there is a bug in the(se) compiler(s)?
Thanks!
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
I can't tell for certain, but it appears to me as a bug in the VC7 compiler. I could be wrong, of course, since VC7 is supposed to be more compliant -- I don't have the ARM with me. But it just seems to me like protected means that it's accessible to derived classes. There's no provision for it being accessible to nested classes.
Regards,
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
You've declared the Inner class as protected. declare it as public and you'll get it to work!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
class Big
{
protected:
static const int CONST_VALUE;
class Inner
{
public:
Inner ();
int x;
};
<font color=red> friend class Inner;</font>
}; Add the friend declaration, that should do the trick.
--Mike--
Friday's GoogleFight results: Britney Spears 2,190,000 - Erica Weichers 23
1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Hello,
I know that if I declare Inner as friend it works on VC 6.0. My problem is: Which compiler's bug is this?
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
But it is not a compiler bug!
Protected members can ONLY be accessed through inheritance.
Do it piblic or as Dunn said friend.
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
Rickard Andersson wrote:
Protected members can ONLY be accessed through inheritance.
I understand that perfectly. My problem is why my sample compiles in VC 7.0!
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
Alexandru Savescu wrote:
My problem is why my sample compiles in VC 7.0
That's a bug... or something... weird!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
Alexandru Savescu wrote:
Which compiler's bug is this?
That, I don't know. Needing the friend declaration just seemed like The Way It Was Done. You should probably consult the C++ spec for the definitive answer.
--Mike--
Friday's GoogleFight results: Britney Spears 2,190,000 - Erica Weichers 23
1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
To all specialists,
i wrote a MFC programm which starts Microsoft Word, creates a document, adds a table to the document and saves the document.
I used the msword9.olb to add the needed classes to my project.
The only thing that bothers me is that i have to find out what values to pass to function by "try and error".
For example i want to create a table with the autofitbehavior set to "FitToContent".
The tables.add function is defined as:
Tables::Add(LPDISPATCH Range, long NumRows, long NumColums, Variant* DefaultTableBehavior, Variant* AutoFitBehavior)
What value does this function expect in "AutoFitBehavior" to set the table to "FitToContent"?
As i said, i fond out by "Try and error". But there must be a better way because there are a lot of functions where this approach will definitely not work.
If anybody knows where to find some documentation like:
"Set AutoFitBehavior to '2' to get 'FitToContent'" i would be glad if he could let me know.
Thanks in advance.
|
|
|
|
|
I added a band with a checkbox with this:
m_reabr.AddBar(&m_check, "On the bar", NULL, RBBS_BREAK|RBBS_GRIPPERALWAYS)
APparently RBBS_GRIPPERALWAYS means that "sizing wrinkles" are present. WHen I ran my code I wasnt able to resize the rebar.
ALso I couldnt move it around. For this do I need to do some docking code?
Thanks
Appreciate your help,
ns
|
|
|
|
|
I tried duplicating the docking code that m_wndToolBAr has, but it asserted on the very first line:
rebar.EnableDocking(CBRS_ALIGNANY);
So what do I need to do to make my rebar move around like the standard toolbar does?
Appreciate your help,
ns
|
|
|
|
|
Hello,
I've used this code in order to get access to the HTMLDocument:
CComQIPtr<IHTMLDocument2> spHTMLDocument = this->m_HTMLCtrl.GetHtmlDocument();
if(spHTMLDocument)
{
CComQIPtr<IHTMLElement>> spHTML;
spHTMLDocument->get_body(&spHTML);
if (spHTML)
{
bstr = csCodiHTML.AllocSysString();
spHTML->put_innerHTML(bstr);
spHTML.Release();
}
else
{
bstr = csCodiHTML.AllocSysString();
spHTMLDocument->createElement(bstr,&spHTML); <code>
}
}
But the first time in which it is accessed the document doesn't exist, and I was wondering if it was possible to create it programatically.
In order to create it I've thought in doing what is written in the else clause, but it has no effect over the HTML document...
Could you give me an advice?
Thank you in advance...
|
|
|
|
|
Joan Murt wrote:
spHTMLDocument->get_body(&spHTML);
This line of code tries to retrieve the <BODY> element. Depending on what is loaded into Internet Explorer, this indeed may be NULL. In this case, a document is created after the first document.write call (translate this to C++ code).
|
|
|
|
|
OK,
in order to do that I need to use a SAFEARRAY, do you know how to work with the SAFEARRAY?
Searching to the MSDN I've not found any example...
Thank you in advance...
|
|
|
|
|
Here is a sample code :
LPVOID ptr = "my text";
LPSAFEARRAY psa;
UINT cElems = lstrlen( (char*)ptr );
LPSTR pOutput;
psa = ::SafeArrayCreateVector(VT_UI1, 0, cElems);
if (!psa)
return;
::SafeArrayAccessData(psa, (LPVOID*)&pOutput);
memcpy(pOutput, ptr, cElems);
::SafeArrayUnaccessData(psa);
pHtmlDoc->write( psa );
::SafeArrayDestroy( psa );
|
|
|
|
|
I don't understand why, but it has not worked as I expected...
it seems that the document is not created as it should be...(I'll try again...)
but thank you for your cute sample...
One question:
at the beggining you assign "my text" to a LPVOID ptr, how do I assign a CString to that ptr?
Thank you in advance!
|
|
|
|
|
HI,
How to access USB port from VC++?
I have used DirectInput IDirectInput8::EnumDevices() but it's not working
How to use DirectInput to access USB port, and enumerate
all devices attached to computer?
thnaks
|
|
|
|
|
I've seen few good source code here at CP implementing POP3 and SMTP protocol, but not a single that implements IMAP protocol. If you know any such code that implements IMAP, then please inform me.
|
|
|
|
|
Hello
I want to create a baseclass for socket servers that use io completion ports.
But I cant manage to pass a class function to BindIoCompletionCallback.
BOOL BindIoCompletionCallback(
HANDLE FileHandle,
LPOVERLAPPED_COMPLETION_ROUTINE Function,
ULONG Flags
);
I call it with:
BindIoCompletionCallback((HANDLE)m_sdListen, DoneIO, 0);
My class looks like:
class IocpServer
{
public:
IocpServer(void);
~IocpServer(void);
void CreateListenSocket(int ListenPort);
void Start(void);
HANDLE GetDieEvent();
void CALLBACK DoneIO(DWORD dwErrorCode,
DWORD dwNumberOfBytesTransferred,
LPOVERLAPPED lpOverlapped);
private:
SOCKET m_sdListen;
DWORD m_dwThreadCount;
HANDLE m_hIOCP;
UINT m_iListenPort;
HANDLE m_hDieEvent;
};
I get this error:
d:\projects\cpp\Datatal\HvdServer\IocpServer.cpp(24) : error C2664: 'BindIoCompletionCallback' : cannot convert parameter 2 from 'void (DWORD,DWORD,LPOVERLAPPED)' to 'LPOVERLAPPED_COMPLETION_ROUTINE'
None of the functions with this name in scope match the target type
|
|
|
|