|
Hi,
I have some code like this:
-----------------------------
void CMyClass::SetIconText(HWND desktopLV)
{
LVITEM lvItem;
::ZeroMemory(lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.lvItem.pszText = "Tralala";
lvItem.cchTextMax = 16;
::SendMessage(desktopLV, LVM_SETITEMTEXT, (int)(WPARAM)0, (LPARAM)(LPLVITEM)&lvItem);
-----------------------------
So, for test purposes, I'm trying to change the text of the first icon on my desktop. (The HWND is okay, since I can use other messages like LVM_SETTEXTCOLOR, etc.).
The problem is, that when the code gets executed, the program crashes...but I can't see the reason, since I believe I did everything okay (obiously, I didn't... .
Any ideas?
Thanks in advance
--Jörg
|
|
|
|
|
That will never work because the desktop window belongs to another process. The string is in your app's process space, which Explorer cannot access. You cannot pass pointers between processes without using shared memory.
--Mike--
Rollin' in my 5.0
With the rag-top down so my hair can blow.
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
I have o develop a netmeeting application
which only has to send and reciev files nothing else
please help as running short on time and very new to com
take care
pauli
|
|
|
|
|
The platform SDK has some good examples of using netmeeting via the COM object.
Michael
|
|
|
|
|
the msdn inof on it is here http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/tsref_8d66.asp
now I try and call that function, the first parameter it takes is
hWnd
[in] Handle of the window to receive session change notifications.
What handle is that? I tried making a class of CMyProg and putting it there but I get some external error that says
traytest2Dlg.obj : error LNK2001: unresolved external symbol _WTSRegisterSessionNotification@8
Debug/traytest2.exe : fatal error LNK1120: 1 unresolved externals
I don't know if it has to do with the parameter i'm passing or not. Any help is very appreciated
|
|
|
|
|
This routine works by sending a window message to the window you specify. So if you have a main frame window, you can say something like pMainFrm ->GetSafeWnd (). (It has been a while since I did MFC, so this might be slightly wrong.)
If you don't have a window, you will have to create one.
As far as the link error goes, you need to link to wtsapi32.lib.
Word of warning: This routine is only supported on XP. So if you don't use runtime late binding, your program won't even start on 9x/ME/NT/2000 systems.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
is pMainFrm something like CTrayTestDlg?
|
|
|
|
|
how do I link to it I keeo getting that same error, I included the microsoft sdk\lib into the directories under library files
|
|
|
|
|
n/m I got it I had to actually add it to the project
|
|
|
|
|
You can link to it without adding it to the project by using Project Settings (alt+f7) - but if you do it either this way, or the way that you have used, you will have linked at compile-time, meaning your program will only work on Windows XP.
--
Andrew.
|
|
|
|
|
i'm running xp and the program is only gonna be for xp it changes an xp setting
|
|
|
|
|
How can i clean the RS 422 input buffer????
i want to start running in a specific time and ignore all the data that is
already been stored in the RS 422 buffer.
How can i do that???
Thanks
|
|
|
|
|
PurgeComm
It has been a while since I worked with 422, but if you are concerned about receiving the output in the input, I would still code for ignoring any message you sent out. WIN32 just doesn't give you enough control to know when a message has been fully sent out of the comm port. You only know when output buffer is empty. There still could be characters waiting on the FIFO.
But, if you are just looking to kill any characters in the input buffer, PurgeComm works great.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
hi, i would like to do something like that:
the website targeted use PHP to login with a username and a password.
and then, some menu is shown, (all using .php or .php3 extension for viewing pages.)
the fact is, if i do not log with my user/password within internet explorer, i can't even retrieve files i want using internet explorer.
but, even after logging in, and when i am able to download any file ending with .php3?someparam=somevalue&another=anothervalue etc...
when i use a offlinebrowser application to save all pages i want, the external application finally download a page which says i'm not logged on. although i can still download that page opening an internet explorer windows... (and setting the offline browser 'spider' to identify itself as IE doesn't solve the problem.)
so i have figured out that i need something, which will log in using a specified username/password, and then, will download all files linked from a single url. (and that need to work with either .php or .php3?x=1&pass=2 files...)
how can i do that?
|
|
|
|
|
Hi.
I would like to know how to determine when the user presses, say, 'z' *while* holding down one of the virtual keys, say Ctrl.
For example
// Ctrl + Z
I can use either OnKeyDown(...) and/or OnChar(...) to determine *either* Ctrl or z, but not both.
I am trying to implement an "undo" feature.
Thanks,
Kuphryn
|
|
|
|
|
|
Thanks.
// if(GetKeyboardState(VK_CONTROL) & 0x8000)
Are you ORing it with the integer 8? Why?
I know that works similarly to check if a key is down while clicking a mouse button. I could not get it to work with a character (OnChar).
Kuphryn
|
|
|
|
|
& is the bitwise AND operator. GetKeyboardState() returns a short (16-bit integer). Check the docs and you'll see that the high bit is 1 if the key is pressed. The high bit of a 16-bit int can be expressed at 0x8000 which is hexadecimal notation.
--Mike--
Rollin' in my 5.0
With the rag-top down so my hair can blow.
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
Okay. Thanks.
Members at other forums mentioned this functions:
GetKeyState(...);
GetAsyncKeyStat(...);
GetKeyboardState(...); // Your recommendation
What are the differences?
Kuphryn
|
|
|
|
|
Sorry, I mistyped. GetKeyState() is the API I'd use. There's probably no difference that you could see between the three APIs. GetKeyState() returns the state of one key, which is what you want, so that's the best one to use from a code readability standpoint. GetAsyncKeyState() will work as well, it just works differently internally.
--Mike--
Rollin' in my 5.0
With the rag-top down so my hair can blow.
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
I want one of my resource bitmaps to appear as the background of my dialog window upon runtime. Can someone please let me know how to go about doing this?
Thanks!
|
|
|
|
|
Handle the WM_ERASEBKGND message. The WPARAM will contain an HDC, you should use this value to create a memDC that you can select your bitmap into, then blt the bitmap into the HDC from WPARAM.
Here is an example assuming that you have the bitmap preloaded in hBitmap, and the dimensions of your bitmap have been cached in a BITMAP structure called bm.
HDC hdc = (HDC)wParam;
HDC hdcMem = ::CreateCompatibleDC(hdc);
::SelectObject(hBitmap);
::BitBlt(hdc, 0,0, bm.bmWidht, bm.bmHeight, hdcMem, 0,0,SRCCOPY);
::DeleteDC(hdcMem);
::SetWindowLong(hWnd, DWL_MESGRESULT, TRUE);
return TRUE;
If you have any more questions feel free to ask.
|
|
|
|
|
void CInterceptDlg::OnPaint()
{
PAINTSTRUCT ps;
HDC hdc
hdc = ::BeginPaint(hWnd, &ps);
...
}
If you are using MFC or WTL, then replace hWnd with m_hWnd in order to get access to the HWND member variable for your window.
|
|
|
|
|
dear all,
How can i restrict Multiple Instance of Mfc Dialog based application?
thanks in advance.
|
|
|
|
|
One way is to use a named mutex.
HANDLE hMultiMutex = CreateMutex (NULL, FALSE, "DSSIOmniServerMutex");
if (hMultiMutex == NULL) { }
DWORD dwWaitResult = WaitForSingleObject (hMultiMutex, 0L);
bool fDuplicate = dwWaitResult == WAIT_TIMEOUT;
It isn't 100% fool proof, but it should work for GUIs.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|