|
I'm building this as an add-in for visual studio. I'm calling it from CDSAddIn::OnConnection. Here is a description of the thinking behind how it all works and some more code.
So, once in the CDSAddIn::OnConnection() method we store off the current CWinApp's hinstance and threadID. Then the AFX_MANAGE_STATE macro is used to switch the state so that our add-ins access to it's resource's will function correctly. Note that the manage state macro is done after the storing of the hinstance and threadID - if we had switched state before, then the values would be different - what we want is to have the hinstance and threadID for the Developer Studio app.
// This is called when the user first loads the add-in, and on start-up
// of each subsequent Developer Studio session
STDMETHODIMP CDSAddIn::OnConnection(IApplication* pApp, VARIANT_BOOL bFirstTime,
long dwCookie, VARIANT_BOOL* OnConnection)
{
HINSTANCE hInst = AfxGetApp()->m_hInstance;
DWORD threadID = AfxGetApp()->m_nThreadID;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|
|
|
|
If you have a CListCtrl, and you set the option to have a border (either through the GUI interface or WM_BORDER option), how do you find the border width ?
|
|
|
|
|
I haven't tried, but I think you can calculate the it by copmuting the difference in width between GetWindowRect and GetClientRect (and dividing by two.)
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Look at ::GetSystemMetrics() in MSDN...
int xBorder = GetSystemMetrics(SM_CXBORDER);
int yBorder = GetSystemMetrics(SM_CYBORDER);
|
|
|
|
|
Does anyone know the commands to overide your applications taskbar options?? i.e. - change the right click and left click functionality of the box that sits in the taskbar?? How would i replace the right click menu (you know restore/minimize/maximize/close/etc) to a custom menu??
kevin
|
|
|
|
|
GetSystemMenu gives you a handle to this menu that you can later use to modify it to your taste.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
CMenu *TEMPA;
TEMPA = GetSystemMenu(TRUE);
CMenu *TEMPB;
TEMPB = TEMPA->GetSubMenu(0);
TEMPB->InsertMenu(0, MF_BYPOSITION, ID_CASCADE, "&Cascade");
The result is a crash... any ideas?
kevin
|
|
|
|
|
ok i see it doesnt work like most popups where you have to get the submenu.. my fault - now how do i enable left click functions??? I want my programs child windows to stack and blink ala AOL AIM..
kevin
|
|
|
|
|
Has anyone been having trouble with the new MFC implementation of CString and the debug memory validation code like _CrtIsValidHeapPointer() ?
I am just moving our projects over to VS.NET and it's really pi**ing me off!
I have an extension DLL that seems to cause the problems in CAfxStringMgr::Free() when the program shuts down. I guess compiling release builds may hide this problem but there must still be a problem?!
Anyone got any ideas for working through these issues?
Cheers
|
|
|
|
|
The following used just fine before I reinstalled VC++.. I am not sure what I forgot to install or set:
Set FSO = CreateObject("Scripting.FileSystemObject")
But now this line generates:
ActiveX component can't create object: 'Scripting.FileSystemObject'
Does anyone know what's wrong?
Vitaly Belman
|
|
|
|
|
Hi!
I want to remotely close an app. What I already tried was to use SendMessage() with messages like WM_CLOSE, WM_QUIT, WM_ENDSESSION and so on. I want to close the filesharing program "KaZaA". But for some reason it does not like the messages
WM_CLOSE: Kazaa simply minimizes itself
WM_QUIT: Nothing happens
WM_ENDSESSION: Kazaa quits, but it crashes
Is there another SMOOTH way to close an app so that it still will be able to finish some tasks before quitting?
thanks in advance
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Try using Spy focused on Kazaa to see the messages it receives on closing.
rechi
|
|
|
|
|
Seems like Kazaa processes WM_DESTROY and WM_NCDESTROY, but it doesn't help work if I send them via SendMessage()
modified 12-Sep-18 21:01pm.
|
|
|
|
|
This might be a little tricky, but you could try to simulate the user clicking "Close" in the trayicon menu
Cheers, Marc Click to see my *real* signature
|
|
|
|
|
I already thought about this option, but have no clue how to do that
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
try sending WM_SYSCOMMAND, wParam=SC_CLOSE, lParam=0
|
|
|
|
|
This minimizes the window into the tray
modified 12-Sep-18 21:01pm.
|
|
|
|
|
okay, then send a close request to the mainframe (the parent window which is creating the systray icon and main dialogs).
If Kazza is an MFC application I would send a WM_COMMAND with wParam=ID_APP_EXIT. Or try spying which messages Kazza is sending to itself when terminating.
PS: are you doing a new P2P worm?
|
|
|
|
|
*lol*, no
I'm coding a plugin for a Half-Life/CounterStrike server joining tool, which terminates filesharing programs in order to prevent lags when joining a server.
Back to topic:
It seems line Kazaa sends WM_COMMAND with following values:
wParam 00008066
lParam 00000000
maybe this works
SendMessage(wndKazaa, WM_COMMAND, ???, 0);
with what do I replace the three questionmarks?
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Use the aforementioned Spy++ utility to see what message(s) get sent to it when it is closed from the context menu.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
Anyone has any sample code for inserting an image into a BLOB field of a DB2 table using VC++ 6.0?
Please help.
|
|
|
|
|
I use this:
STDMETHODIMP CMediaServer::GetUrnList(BSTR *pRetval)
{
char *sz=global_heart.m_pDataBase->GetUrnList();
if (sz)
{
*pRetval=_bstr_t(sz);
delete [] sz;
}
return S_OK;
}
to obtain a string from an interface, and this:
BSTR x;
((IMediaServer *)ptr)->GetUrnList(&x);
_bstr_t xx(x, FALSE);
CString szMan;
szMan.Format("%s", xx);
AfxMessageBox(szMan);
to test the stuff. The string in the message box is something unreadable, so i'm asking: where is the mistake?
rechi
|
|
|
|
|
Bogdan Rechi wrote:
szMan.Format("%s", xx);
The mistake is there
Format takes variable number of args and so xx would not be converted to char*.
The correct way is
CString szMan;
const char* chxx = xx;
szMan.Format("%s", chxx);
|
|
|
|
|
Anonymous wrote:
<br />
CString szMan; <br />
const char* chxx = xx;<br />
szMan.Format("%s", chxx);<br />
That code is attempting to cast a BSTR/_bstr_t to a const char * , which is a no-no.
And, if all you need to so is display the contents of the BSTR as an ASCIIZ string, you can change %s to a %S (uppercase) and it will treat the parameter as a wide string, which is what a BSTR contains:
<br />
szMan.Format( _T( "%S" ), x );
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
This solution suffer from the same problem than the original code that you try to correct...
Conversions operators are not called for function which variables arguments and the whole object is push on the stack.
_bstr_t is not a BSTR. It's an object that contains a pointer to a sub-object that will hold the BSTR and the converted string (if it was asked).
Philippe Mori
|
|
|
|