|
you created button and declare function for buttons but
buttons are disable,right?
|
|
|
|
|
venadder wrote: void CLaunchbar::OnBnClickedLbrexitapp()
You must provide a message handler in the MainFrame class not in the DialogBar class.
Nibu thomas
Software Developer
|
|
|
|
|
Thanx for your input. I changed it from dialog bar to CDialog anywyas. I have much more control and flexibility that way. It's easy to position teh window even with CDialog.
But thanx for your help. I appreciate it.
|
|
|
|
|
venadder wrote: I changed it from dialog bar to CDialog anywyas. I have much more control and flexibility that way. It's easy to position teh window even with CDialog.
Why oh why!!!
Then what is the use of a Dialog bar!!!
You just have to provide a message handler for the button in the main frame class. That's all. Nothing more nothing less. Just like you would do for a toolbar button.
Nibu thomas
Software Developer
|
|
|
|
|
So I know you can do this with Windows... cuz I turn winamp all the way down and I can still hear other applications...
I want to be able to mute only my application... how can I do this?
Thanks!
|
|
|
|
|
chasetoys wrote: I want to be able to mute only my application... how can I do this?
You can't. Windows XP doesn't have per-application volume controls. Windows Vista will do, but not XP. Winamp does this by modifying the audio data it is sending to Windows.
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"
|
|
|
|
|
Ryan Binns wrote: Windows XP doesn't have per-application volume controls.
Yes there is!! I installed K-Lite, and there is "MediaPlayer Classic" which came from K-Lite installation. To change the volume of MediaPlayer Classic does not affect WinXp overall volume. (Windows MediaPlayer and RealPlayer do.)
Maxwell Chen
|
|
|
|
|
Maxwell Chen wrote: Yes there is!! I installed K-Lite, and there is "MediaPlayer Classic" which came from K-Lite installation. To change the volume of MediaPlayer Classic does not affect WinXp overall volume. (Windows MediaPlayer and RealPlayer do.)
What Media Player Classic does is process the audio before it sends it to Windows to change its volume. Windows XP does not have individual volume controls per application - that is a new feature coming with Windows Vista.
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"
|
|
|
|
|
store the user preferred volume (usually 0 [mute] - 10) and send/check this whenever you play sound. the exact code depends on what/how you are playing audio
|
|
|
|
|
I have run into a problem with registration keys ".Default\\.Default". WHat I am trying to do is read the "Apps\\Events\\.Default\\.Default" value. I am trying to identify System sound events that are attached to a .wav file for inclusion in a list box.
The Means Justifies the Ends
|
|
|
|
|
oldmirco wrote: I have run into a problem
What is the problem?
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"
|
|
|
|
|
Do you need to read with RegEnumValue?
|
|
|
|
|
When I try:
RegOpenKeyEx(HKEY_CURRENT_USER,"AppEvents\\EventLabels", 0L,KEY_READ, &SoundsKey);
and use:
RegEnumKeyEx(SoundsKey,dwIndex,lpSubKey,&dwSubKeysz,
NULL, lpData, &dwDatasz, &ftLastWriteTime);
to return the next level in the chain, and use:
RegOpenKeyEx(HKEY_CURRENT_USER,
("AppEvents\\EventLabels\\"+lpData),
0L,KEY_READ, &SoundsKey);
(the strings concatenated in code)
I get an error code.
The Means Justifies the Ends
|
|
|
|
|
oldmirco,
you get this error "AppEvents\\EventLabels\\"+lpData
or you get runtime error
|
|
|
|
|
char buffer80[80];
char buffer256[256];
char buffer512[512];
LONG retValue;
CString EventKey;
CStringList EventKeyList;
CString DisplayValue;
FILETIME ftLastWriteTime;
HKEY SoundsKey;
DWORD dwIndex = 0;
DWORD dwSubKeysz;
char * lpSubKey = buffer256;
char * lpData = buffer512;
DWORD dwDatasz;
// "HKEY_CURRENT_USER\AppEvents\"
if (RegOpenKeyEx(HKEY_CURRENT_USER,"AppEvents\\EventLabels", 0L,
KEY_READ, &SoundsKey)==ERROR_SUCCESS)
{
do
{
*lpSubKey = 0;
dwSubKeysz = 256;
*lpData = 0;
dwDatasz = 512;
retValue = RegEnumKeyEx(SoundsKey,dwIndex,lpSubKey,&dwSubKeysz,
NULL, lpData, &dwDatasz, &ftLastWriteTime);
switch(retValue)
{
case ERROR_SUCCESS:
//add sub Key to a CStringList
EventKeyList.AddTail(lpSubKey);
/* the values should include ".Default", "Close", "Minimise", "Open"
"Start", "SystemAsterisk" etc. w/o the full key hierarchy
*/
break;
case ERROR_NO_MORE_ITEMS:
AfxMessageBox("No More Items", MB_OK);
break;
default:
if (AfxMessageBox("Try Again?", MB_OKCANCEL)!=IDOK) return TRUE;
}
dwIndex++;
} while(retValue!=ERROR_NO_MORE_ITEMS);
}
//Look in HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default
if (RegOpenKeyEx(HKEY_CURRENT_USER,"AppEvents\\Schemes\Apps\\.Default", 0L,
KEY_READ, &SoundsKey)==ERROR_SUCCESS)
{
// get key values
dwIndex = 0;
POSITION Ip = EventKeyList.GetHeadPosition();
while (Ip!=NULL)
{
*lpData = 0;
dwDatasz = 512;
DisplayValue = EventKeyList.GetNext(Ip);
strcpy(lpSubKey, DisplayValue);
/*
the keys that are stored in the EventKey list: ".Default", "Close", "Minimise", "Open"
"Start", "SystemAsterisk" either will or will not have a file name
(with a ".wav") as a data value. Those that have a value are
system sounds that will play, and that I want in the list box.
*/
retValue = RegQueryValueEx(SoundsKey,lpSubKey,NULL,NULL,(unsigned char*)lpData,&dwDatasz);
switch(retValue)
{
case ERROR_SUCCESS:
DisplayValue += " = ";
if (*lpData) DisplayValue += lpData;
if (AfxMessageBox(DisplayValue, MB_OK)!=IDOK);
break;
case ERROR_NO_MORE_ITEMS:
DisplayValue += " Not here";
AfxMessageBox(DisplayValue, MB_OK);
break;
default:
// This is the message for every item:
DisplayValue += " Error!";
if (AfxMessageBox(DisplayValue, MB_OKCANCEL)!=IDOK) return TRUE;
}
dwIndex++;
}
}
The Means Justifies the Ends
|
|
|
|
|
Hope I understood your question
I guess when I see RegEnumValue in title that you need to read value from keys
I find your problem you want run this way(I suggest) maybe you find a good way
...
...
... code is ok
//Look in HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default
then I suggest use this way
these keys are with subkey (example .Default with .Current and .Default
1- you want read first root that is HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default(RegOpenKeyEx)
then read first subkey with RegEnumKeyEx(.Default)
2-now you want concat root with current key
TCHAR test[256];
test[0]='\0';
strcat(test,"AppEvents\\Schemes\\Apps\\.Default");
strcat(test,"\\");
strcat(test,lpSubKey);//.Default
3-RegCloseKey(SoundsKey);
4-open new path with RegOpenKeyEx (test )
5-now you want subkeys from .Default that are .Default and .Current
6-RegCloseKey(SoundsKey);
7-now you need to loop for read subkeys from
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\.Default that are two keys
and hold in one Array
now you want concat these subkeys with current path but first close RegCloseKey(SoundsKey);
in the loop
<br />
for(int i=0;i<m_Array.GetCount();i++)<br />
{<br />
CString str;<br />
str=m_Array.GetAt(i);<br />
now concat current path with current subkey that is <br />
strcat(HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\.Default\.Current<br />
<br />
and use RegEnumValue for read value that is one path .wav<br />
next key is .Default<br />
}<br />
maybe it is some helpful to you
|
|
|
|
|
CWnd has no such RegEnumValue() method.
oldmirco wrote: WHat I am trying to do is read the "Apps\\Events\\.Default\\.Default" value.
So what's the problem? Are you using RegQueryValueEx() ?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"We will be known forever by the tracks we leave." - Native American Proverb
|
|
|
|
|
Hi everybody!
Sorry for my bad english.
I would like to programmatically prevent from powering of the computer with the power off button. but I dont care about holding the power off button 5 second to hard shut the computer. Just the smooth shutdown.
in microsoft word, when you edit a document and do not save it. If you press the power down button ( digital type ), a Dialog will pop and ask you to save the document. If you press cancel, the System will not shut down and the application will stay active. I would like to do the same with my application.
Thanks in advance for your help!
Sébastien Nadeau
Security Software Developper
|
|
|
|
|
|
|
Hi All,
I am doing a project which deals with the basic file operations, like creating a file, renaming a file, copying a file, deleting a file etc.
can anyone suggest me a best way to do this without impacting the performance.
i have to do these operations 10000 times.
thanks
peruv
|
|
|
|
|
File I/O is going to impact performance.
For create/writing the file use CFile. For rename/delete just use the standard Win32 API calls.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Try std::fstream .
Maxwell Chen
|
|
|
|
|
In addition to the previous two good ideas, also consider a background app that has no GUI interface of its own, perhaps a dll.
The Means Justifies the Ends
|
|
|
|
|
Hi,
I'm trying to follow the example described at http://www.codeproject.com/dll/XDllPt1.asp to create and use the contents of a DLL from a VC++ application. Problem is that i'm using Visual Studio .NET 2003 instead of Visual Studio 6 in the example.
It seems my project wizard does not have the "Win32 Dynamic Link Library" option. The only kind of project that look like a DLL is named "MFC DLL" and has 3 possible options. 2 of them create an instance of a class that derives from CWinApp and I guess I don't want that. The last option creates a project with a DllMain entry point (just like the example) but there are also some differences (see cpp file below).
So I'm wondering if I can get VS .NET 2003 to behave as VS 6 does (something I didn't see in the project wizard or in the installation setup) or if I must go on using the provided template (meaning there are some good reasons why the template file for a dll has changed in VS .NET 2003).
Thanks for your help.
cpp template file :
#include "stdafx.h"
#include <afxdllx.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
static AFX_EXTENSION_MODULE testdll02DLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("testdll02.DLL Initializing!\n");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(testdll02DLL, hInstance))
return 0;
// Insert this DLL into the resource chain
// NOTE: If this Extension DLL is being implicitly linked to by
// an MFC Regular DLL (such as an ActiveX Control)
// instead of an MFC application, then you will want to
// remove this line from DllMain and put it in a separate
// function exported from this Extension DLL. The Regular DLL
// that uses this Extension DLL should then explicitly call that
// function to initialize this Extension DLL. Otherwise,
// the CDynLinkLibrary object will not be attached to the
// Regular DLL's resource chain, and serious problems will
// result.
new CDynLinkLibrary(testdll02DLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("testdll02.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(testdll02DLL);
}
return 1; // ok
}
|
|
|
|