|
U can use..
if(GetFileAttributes(file_r_dir_name) == FILE_ATTRIBUTE_DIRECTORY)
{
//it's a directory
}
else
{
//it's a fil
}
|
|
|
|
|
Won't work as expected. You have to check the FILE_ATTRIBUTE_DIRECTORY bit only. Directories can be hidden, compressed, readonly etc.
if (GetFileAttributes(file_r_dir_name) & FILE_ATTRIBUTE_DIRECTORY)
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
Hi !
I create a UI Thread in my software and I am sure that it is created because I have a breakpoint in the InitInstance function which only Return TRUE; At this point, I know that the message pump of this thread is running. (Is it right ?)
I use PostThreadMessage() to send a user message to my thread. It seems that the message is never sent. I try to use SPY++ with this thread and I don't find them. I find the main thread of my software but not the UI Thread created by me (This is a derivative of CWinThread). I want to see all messages for this thread in SPY++. I use it for the first time and I understand how it work which other thread and process. It does'nt work for my thread.
Do you have any idea ?
|
|
|
|
|
Danny Gilbert wrote:
At this point, I know that the message pump of this thread is running. (Is it right ?)
No, the message loop does not begin until after InitInstance() returns. If it returns FALSE, the message loop is never entered.
Danny Gilbert wrote:
I use PostThreadMessage() to send a user message to my thread. It seems that the message is never sent.
What did PostThreadMessage() return? Show us the code you used to call PostThreadMessage() .
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Thanks Ryan !
My InitInstance() function is the one given by Wizard. It returns TRUE and it works. (I saw it with debugger).
Here is a part of my code.
// Create Thread.
m_pUIThreadTestPlan = (ThreadTestPlan *) AfxBeginThread( RUNTIME_CLASS(ThreadTestPlan));
// Start the execution of all activities in the thread.
m_pUIThreadTestPlan->PostThreadMessage( WU_UITHREAD_TESTPLAN_START, 0, (LPARAM) thread_info);
thread_info is a structure with some information for the thread.
Here is the message map for the handler of my WU_UITHREAD_TESTPLAN_START message.
BEGIN_MESSAGE_MAP(ThreadTestPlan, CWinThread)
//{{AFX_MSG_MAP(ThreadTestPlan)
ON_THREAD_MESSAGE(WU_UITHREAD_TESTPLAN_START, OnStart)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
And for sure, I have a function named OnStart().
LRESULT ThreadTestPlan::OnStart(WPARAM, LPARAM lp)
{
// Something inside here.
With my debugger I never ENTER here. NOTHINGS HAPPEN.
}
The other point is I don't see The THREAD in SPY++.
|
|
|
|
|
Danny Gilbert wrote:
The other point is I don't see The THREAD in SPY++.
Hmmm, this seems to suggest that the thread doesn't exist. Spy++ should be able to see it if it's there... Are you sure the thread is being created correctly?
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Ok thank you Ryan ! I found the result on www.MSDN.com
Here is the result.
// Generated message map functions
//{{AFX_MSG(ThreadTestPlan)
afx_msg LRESULT OnStart(WPARAM, LPARAM lp);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
static UINT NEAR WM_TEST_PLAN_START = RegisterWindowMessage("WM_TEST_PLAN_START");
I register my message and I call the message handler (my function) via message map with ON_REGISTERED_MESSAGE.
ON_REGISTERED_MESSAGE(WM_TEST_PLAN_START, OnStart)
I hope it won't generate another error.
|
|
|
|
|
Can anyone plz tell me how to use a function which is taking parameter as UNICODE into ANSI or such that it takes parameter as char. Or How to convert parameter from char UNICODE and UNICODE to ANSI ?
I am using function NetShareEnum : the example is same as given in MSDN. Also given below... What needs to be changed so that I can use main() instead of wmain() like...void main(int argc, char* argv[])...instead of (int argc, TCHAR* argv[])...
#define UNICODE
#include <windows.h>
#include <stdio.h>
#include <lm.h>
void wmain( int argc, TCHAR *lpszArgv[ ])
{
PSHARE_INFO_502 BufPtr,p;
NET_API_STATUS res;
LPTSTR lpszServer = NULL;
DWORD er=0,tr=0,resume=0, i;
switch(argc)
{
case 2:
lpszServer = lpszArgv[1];
break;
default:
printf("Usage: NetShareEnum <servername>\n");
return;
}
//
// Print a report header.
//
printf("Share: Local Path: Uses: Descriptor:\n");
printf("---------------------------------------------------------------------\n");
//
// Call the NetShareEnum function; specify level 502.
//
do // begin do
{
res = NetShareEnum (lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume);
//
// If the call succeeds,
//
if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
{
p=BufPtr;
//
// Loop through the entries;
// print retrieved data.
//
for(i=1;i<=er;i++)
{
printf("%-20S%-30S%-8u",p->shi502_netname, p->shi502_path, p->shi502_current_uses);
//
// Validate the value of the
// shi502_security_descriptor member.
//
if (IsValidSecurityDescriptor(p->shi502_security_descriptor))
printf("Yes\n");
else
printf("No\n");
p++;
}
//
// Free the allocated buffer.
//
NetApiBufferFree(BufPtr);
}
else
printf("Error: %ld\n",res);
}
// Continue to call NetShareEnum while
// there are more entries.
//
while (res==ERROR_MORE_DATA); // end do
return;
}
|
|
|
|
|
The easiest way is to #include <AtlConv.h> and use the A2W macro.
USES_CONVERSION;
res = NetShareEnum (A2W(lpszServer), 502, ...
Look up "ATL and MFC String Conversion Macros" in MSDN.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
In my app i have a bitmap button
i set the bitmap of the button like so
m_BrowseFile.SetBitmap( LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE( IDB_OPEN ) ) );
now in the bitmap file the background is gray, and that gray area is showing up
how do i get rid of the gray background?
|
|
|
|
|
Use LoadImage() instead of LoadBitmap() , and specify the LR_LOADMAP3DCOLORS and LR_LOADTRANSPARENT flags.
m_BrowseFile.SetBitmap((HBITMAP)LoadImage(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDB_OPEN),
IMAGE_BITMAP,
0, 0,
LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT));
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
In my project, I need to automate the process of building a new network connection. You can manually set up a new connection as the following: "Control Panel" -> "Network Connections" -> "Create a new connection" -> Click "next" -> "setup an advanced connection" -> next -> ... We can assume that it is fixed process.
Is there any scripting tool or Windows API which I can use to automate the above process in my VC++ program? Anybody can give me a hint? Thanks a lot
-Jeff
|
|
|
|
|
Hi Jeff,
You can use the RAS API (Remote Access Service) to solve your problem. There's examples how to use it in MSDN.
Cohen
|
|
|
|
|
HI~
struct b
{
LPWSTR c;
}
struct a
{
b* d;
}
a* e;
e = new a[100];
a f;
f.d = new b[1000];
b g;
g.c = _T("HIHI");
f.d[0] = g;
e[0] = f;
if I delete pointer e by this statement:
delete [] e;
can it free all the memory including the dynamic array (pointer d) in structure a and the LPWSTR type string pointer in structure b?
or I need to free pointer d first or free pointer c first?
thanks
|
|
|
|
|
can it free all the memory including the dynamic array (pointer d) in structure a and the LPWSTR type string pointer in structure b?
or I need to free pointer d first or free pointer c first?
No, you shouldn't point the existing pointer with new a[100] assigned
to another pointer. Doing so will cause the memory leak of size struct a * 100 cause the system find no way to reclaim back the memory you allocated, the address that the pointer point to has changed.
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
that is some weird code.
If you run it I think f.d = new b[1000]; will not be deleted
You dont always want to delete this pointer though because some times it is pointing to data on the stack, f.d[0] = g;
Basiacally what you have here is a big mess.
|
|
|
|
|
Is it possible to use animated cursors or small animated gifs as bitmap on a toolbar. My search on google and here did not turn up anything.
|
|
|
|
|
Everything is possible.
But, doing what you describe requires that you create a custom toolbar control that animates the buttons. Windows standard toolbar does not provide the functionality you require.
Easiest way to start is to search here on CP for animatable buttons. Then laden these buttons in a row over a Rebar control, and attach it to the top of the window. It works just like a toolbar, but is made and upkept by you.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
how to disable the task manager while my program runnig
|
|
|
|
|
There is no such way.
The Task Manager is a crucial Windows component that allows the user to shut down programs or processes that have stopped working or are behaving incorrectly. Disabling it would mean that the user loses the majority of control that he/she has over what programs are running on the system.
As such, disabling it is not an option. Whatever you are trying to implement, you should consider implementing it differently.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
This is what I use to disable the task manager
during games and such.
Regsitry
Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System
Key
DisableTaskMgr
Thank You
Bo Hunter
|
|
|
|
|
|
I handle a check menu item like this:
// the update command
void CAppDlg::OnUpdateMenuItem(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(BoolVar);
........
}
and
// the command
void CAppDlg::OnInterfaceMenuItem()
{
BoolVar = BoolVar == 0 ? 1 : 0;
}
The solution works with one exception: when the item is not checked the sign before the caption does not dissapear (but it works just fine). How do i get that "check" sign to dissapear ? If the check state is false, should not dissapear by default ?
|
|
|
|
|
Hi all,
I have an application (win .exe app) and I wish it could be running background. But it needs keyboard and mouse input which is fixed and could be prepared in advance. So I saved mouse/keyboard in a file, and I am trying to code a small program which could send mouse/keyboard to my background app.
I read several example in codeproject about hook mouse/keyboard message and tried to insert mouse/kb events using WH_JOURNALPLAYBACK hook. Unfortunately, the hWnd parameter is ignored so my mouse/kb messages are always sent to active window, not background app.
Now I am lost. Could anyone please give me a direction?
Thanks in advance,
Joe
|
|
|
|
|
Im having a smiliar question and was about to post it, but mine is almost the opposite.
I have a background app that has a recorded sequence of key presses and I want to send them to my foreground app.
I think possibly the answer to your question may be answer to my question.
Now, I have tried things like hooking the KB, and tried code segments like this one:
void SetRIGHT( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_RIGHT] & 1)) ||
(!bState && (keyState[VK_RIGHT] & 1)) )
{
// Simulate a key press
keybd_event( VK_RIGHT,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_RIGHT,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0 );
}
}
Then moving foreground to my app I want to recieve the input, alas, it dosent do what I want it to. It does however result in strange things happening like the right and left arrow keys get stuck so I have to hit them twice, im sure its a conflict in what im doing.
Anyhow, Thanks in advance,
Charles
|
|
|
|