|
I want to hide a folder which exist in c drive. I use setfileattribute method and pass file_attribute_hidden.
But if c drive is open in window explorer then folder does not hide immediately
i need to refresh window explorer manually
please suggest how to do that
i got below link and function to do it but that code does not compile
http://social.msdn.microsoft.com/Forums/en/windowssdk/thread/cc4a702f-1b2f-4d19-bf68-c88967544172[^]
RefreshFolderSelectionPacket and RefreshSelection()
|
|
|
|
|
Your link needs to be made clickable by using the link control on the edit window thus:
clickety[^].
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
Thanks for the link
The given link says to use RefreshFolderSelectionPacket
I get compile error when use this
WHere this structure is defined
|
|
|
|
|
MKC002 wrote: WHere this structure is defined
Sorry, no idea; the link is the one that you provided in your original post.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
I thought I got this right, but it's my first time converting numbers to letters, in a message I'm building to send to a text hwnd.
dBytes = ((float)ulProgress / (1024*1024));
dTotal = ((float)ulProgressMax / (1024*1024));
if ((dBytes > 0.10) && (dTotal > 0.10)) {
WCHAR str0[120];
WCHAR str1[120];
str0[0] = L'\0';
str1[0] = L'\0';
wprintf(str0, L"%.2f", dBytes);
wprintf(str1, L"%.2f", dTotal);
|
|
|
|
|
jkirkerx wrote: str0[0] = L'\0';
str1[0] = L'\0';
Unnecessary.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
jkirkerx wrote:
wprintf(str0, L"%.2f", dBytes);
wprintf(str1, L"%.2f", dTotal);
|
Don't you mean wsprintf ?
There are probably close to aleph-null ways to do it.
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
The wsprintf just gave me a f
I tried a char and sprintf, and the values I need came back. I'm new to this, so I thought I could go straight to unicode.
char szTemp0[20];
char szTemp1[20];
sprintf(szTemp0, "%.2f", dBytes);
sprintf(szTemp1, "%.2f", dTotal);
|
|
|
|
|
jkirkerx wrote: The wsprintf just gave me a f
In your original post, you used wprintf() not wsprintf() . They output to two different places.
Have you considered:
TCHAR szTemp0[20];
TCHAR szTemp1[20];
_stprintf(szTemp0, _T("%.2f"), dBytes);
_stprintf(szTemp1, _T("%.2f"), dTotal); This will handle both Unicode and MBCS.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
modified 15-Nov-11 15:07pm.
|
|
|
|
|
No.
But I did consider that perhaps I should always use TCHAR when working with Windows stuff like writing registry keys, and sending setting window text.
I change my code to this, and I'm still working with WCHAR on szStatusMessage. The code is inside the IBindStatusCallback in the OnProgress Loop in case your wondering. For me this is uncharted waters, and I sort had to guess at how to work with it.
dBytes = ((float)ulProgress / (1024*1024));
dTotal = ((float)ulProgressMax / (1024*1024));
dPercent = dBytes/dTotal*100;
if ((dBytes > 0.10) && (dTotal > 0.10)) {
swprintf_s(szStatusMessage, L"Downloading %.2f MB of %.2f MB [%.1f%%]", dBytes, dTotal, dPercent);
iMsgLen = wcslen(szStatusMessage);
szStatusMessage[iMsgLen] = '\0';
}
|
|
|
|
|
jkirkerx wrote: szStatusMessage[iMsgLen] = '\0';
Unnecessary.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I took it out, and put it back in.
I wasn't sure how to handle the callback loop, and didn't want to create what I call variables in the loop. So I created the szStatusMessage in the private section of the class. When the loop goes round, some of the messages are longer than others, and the old message doesn't clear when the new message is written to the space, so I put the \0 back in just to get rid of the old message, so the cat writes the entire space. I could experiment with moving it back into the loop, and see what changes I need to make.
|
|
|
|
|
You are misusing swprintf_s() . The second argument is the maximum number of characters to store in the buffer. Correctly used, swprintf_s() will terminate the buffer where necessary.
Try:
swprintf_s(szStatusMessage, sizeof(szStatusMessage), L"Downloading %.2f MB of %.2f MB [%.1f%%]", dBytes, dTotal, dPercent);
|
|
|
|
|
Let me look into the proper use, I know there was a ms version wsprintf_s and a ansi version swprintf_s. I moved the variables inside the loop, works ok, but I get squares in the message because I haven't populated it yet.
I guess I should of shown more code, the other half of the if statement, that shows the status message from the callback. I may kill the idea of that message, I don't see anything relevant to it.
if ((dBytes > 0.10) && (dTotal > 0.10)) {
swprintf_s(szStatusMessage, L"Downloading %.2f MB of %.2f MB [%.1f%%]", dBytes, dTotal, dPercent);
iMsgLen = wcslen(szStatusMessage);
szStatusMessage[iMsgLen] = '\0';
}
else {
if (wszStatusText != NULL) {
int iStatusLen = wcslen(wszStatusText);
if (iStatusLen < 80) {
iMsgLen = wcslen(szStatusMessage);
wcsncpy_s(szStatusMessage, wszStatusText, iStatusLen);
szStatusMessage[iStatusLen] = '\0';
}
}
}
SetWindowText(hWnd_Progress_Text, szStatusMessage);
dPB = (float)ulProgress/ulProgressMax*5000.0;
SendMessage(hWnd_Progress_Bar, PBM_SETRANGE, 0, MAKELPARAM(0, 5000));
SendMessage(hWnd_Progress_Bar, PBM_SETPOS, (WPARAM)dPB, 0);
|
|
|
|
|
Thanks for the heads up on the swprintf_s. I appreciate the attention to detail and efficiency you gave me today. tough learn today, but it works well.
Changed it to this now.
case BINDSTATUS_DOWNLOADINGDATA:
dBytes = ((float)ulProgress / (1024*1024));
dTotal = ((float)ulProgressMax / (1024*1024));
dPercent = dBytes/dTotal*100;
if ((dBytes > 0.10) && (dTotal > 0.10)) {
swprintf_s(szStatusMessage, 80, L"Downloading %.2f MB of %.2f MB [%.1f%%]", dBytes, dTotal, dPercent);
iMsgLen = wcslen(szStatusMessage);
szStatusMessage[iMsgLen] = '\0';
}
break;
|
|
|
|
|
jkirkerx wrote: iMsgLen = wcslen(szStatusMessage);
szStatusMessage[iMsgLen] = '\0';
wcslen() relies upon szStatusMessage being \0 terminated, so these two statements don't do anything useful.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I didn't know that. I'll experiment with removing them and see what happens. I'm sure your right on that. That means less code to type for me in the future.
Thanks Dave,
|
|
|
|
|
I used swprintf, I think the wsprintf was for tchars. It will do for now
WCHAR szBytes[20];
WCHAR szTotal[20];
swprintf(szBytes, L"%.2f", dBytes);
swprintf(szTotal, L"%.2f", dTotal);
|
|
|
|
|
Alright I'm still learning here so don't laugh, but I was able to consolidate the whole thing into one swprintf_s, to produce my status message. That's pretty cool. I wonder if I should of just used TCHAR and wsprintf_s and went the Microsoft way?
FYI:
I started with vb, so I was use to building strings together with &, or + in JavaScript.
dBytes = ((float)ulProgress / (1024*1024));
dTotal = ((float)ulProgressMax / (1024*1024));
if ((dBytes > 0.10) && (dTotal > 0.10)) {
swprintf_s(szStatusMessage, L"Downloading %.2f MB of %.2f MB", dBytes, dTotal);
iMsgLen = wcslen(szStatusMessage);
szStatusMessage[iMsgLen] = '\0';
}
|
|
|
|
|
jkirkerx wrote: I started with vb, so I was use to building strings together with &, or + in JavaScript.
You can still do that with MFC's CString class, or with the STL's std::string class.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
DavidCrow wrote: You can still do that with ..., or with ... That was the point of my aleph-null quip above.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
I got few of these linker errors in my application.
I have reloaded the VC 6.0 - no SP packs yet and build a simple MFC ( all defaults) application and now I am getting same linker error.
I have not changed anything, using default setting.
I am guessing some library got "corrupted", but which one?
Any clue what is happening here?
Linking...
ChildFrm.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CWnd::SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO *)" (?SetOccDialogInfo@CWnd@@UAEHPAU_AFX_OCC_DIALOG_INFO@@@Z)
MainFrm.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CWnd::SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO *)" (?SetOccDialogInfo@CWnd@@UAEHPAU_AFX_OCC_DIALOG_INFO@@@Z)
TSET2View.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CWnd::SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO *)" (?SetOccDialogInfo@CWnd@@UAEHPAU_AFX_OCC_DIALOG_INFO@@@Z)
Debug/TSET2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Any help as always will be appreciated. Thanks for your time.
Addendum
Dialog based MFC application compiles just peachy, only SDI and MDI have this linker issue.
Vaclav
After flushing and reinstalling the VC 6.0 from scratch it works.
-- modified 15-Nov-11 16:50pm.
|
|
|
|
|
Are you sure that function (SetOccDialogInfo) is available in this version of MFC (VS 6.0?)
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
I have been using VC 6.0 for at least 15 years and this is the first time I encountered this linker error.
I am going for full reinstall of the VC 6.0 for now.
|
|
|
|
|
Hi,
I have an app that has two tab, "informes" and "variables", but I have to delete the informes tab becouse now it is not used. The code isn't me, and due to it, I don't know how to delete the tab.
This is the app.
http://i42.tinypic.com/2bwfiu.png
I think that the tab is created in Ftab file, but I dont know where.
http://www.megaupload.com/?d=UDMM3WC5[^]
|
|
|
|