|
which includes are necessary for CMenu because i am not working on MFC.
i have replace POINT with CPoint.but how menu ???
Amit
|
|
|
|
|
no pblm ...use sdk calls it self
POINT pt;
HMENU hMenu=LoadMenu(hInst,TEXT("IDR_MENU1"));
Point pt;
pt = GetCurrentMessage()->pt;
HMENU hSubmenu = GetSubMenu( hMenu,0 );
TrackPopupMenu( hSubmenu, TPM_LEFTALIGN, pt.x, pt.y, hList, 0 );
but dont forget to make the delete as submenu.
i found another ppblm in your code
HMENU hMenu=LoadMenu(hInst,TEXT("IDR_MENU1"));
TrackPopupMenu(hmenuTrackPopup,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x, pt.y, 0, hList, NULL);
in the above code that you pasted earlier, you r loading the menu to hMenu. But your calling the TrackPopupMenu with handle hmenuTrackPopup
nave
|
|
|
|
|
yes thanks !
actually when I received your mail at the same time i have did it.
and when i have compare with your code its same.
Thanks once again.
|
|
|
|
|
hi nave ,
ask you one question how can i handle an event for the delete button
for that i have put my code in
<br />
case WM_COMMAND:<br />
<br />
switch(LOWORD(wParam))<br />
{ <br />
case ID_DELETE_DELETE: <br />
{<br />
int iSlected=0;<br />
iSlected=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);<br />
if(iSlected==-1)<br />
{<br />
MessageBox(hList,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION);<br />
break;<br />
} <br />
ListView_DeleteItem(hList,iSlected); <br />
}<br />
<br />
break;<br />
<br />
}<br />
<br />
should it work or now i have to write somewhere else?
Amit
|
|
|
|
|
Did you run your code and what happens and also you can use of LVNI_SELECTED
|
|
|
|
|
amitmistry_petlad wrote: iSlected=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
better use LVNI_SELECTED
every thing else seems to be fine
nave
|
|
|
|
|
I have changed it but the "delete" is not working.
should i have to change anything else?
Amit
|
|
|
|
|
Whats the value of selected item?
nave
|
|
|
|
|
When i debug at the break point of the WM_COMMAND.
the control does not go there. then where should it goes ?
is it come in listview command ?
if it is call in listview notify command then how could i write ?
LOOK AT CODE:
case WM_PAINT:
hdc = BeginPaint(hDlg, &ps);
EndPaint(hDlg, &ps);
break;
case WM_NOTIFY:
{
switch(LOWORD(wParam))
{
case IDC_LIST4:
LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;
if(pnm->hdr.hwndFrom == hList &&pnm->hdr.code == NM_CUSTOMDRAW)
{
return TRUE;
}
if(((LPNMHDR)lParam)->code == LVN_KEYDOWN)
{
{
int iSlected=0;
iSlected=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
if(iSlected==-1)
{
MessageBox(hList,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION);
break;
}
ListView_DeleteItem(hList,iSlected);
}
}
if(((LPNMHDR)lParam)->code == NM_RCLICK)
{
HMENU hMenu = LoadMenu (NULL, MAKEINTRESOURCE (IDR_MENU1));
HMENU hPopupMenu = GetSubMenu (hMenu, 0);
POINT pt;
SetMenuDefaultItem (hPopupMenu, -1, TRUE);
GetCursorPos (&pt);
TrackPopupMenu (hPopupMenu,TPM_LEFTALIGN, pt.x, pt.y, 0, hList, NULL);
DestroyMenu (hPopupMenu);
DestroyMenu (hMenu);
}
if(((LPNMHDR)lParam)->code == NM_CLICK)
{
iSelect=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
if(iSelect==-1)
{
break;
}
index=iSelect;
ShowWindow(hWndinoutfiledir,SW_HIDE);
ShowWindow(hwndEncrypt,SW_HIDE);
ShowWindow(hwndSplit,SW_HIDE);
ShowWindow(hwndUpload,SW_HIDE);
ShowWindow(hwndTagEditorDlg ,SW_SHOW);
}
break;
}
}
break;
<code>
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_DELETE_DELETE:
{
int iSlected=0;
iSlected=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_SELECTED);
if(iSlected==-1)
{
MessageBox(hList,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION);
break;
}
ListView_DeleteItem(hList,iSlected);
}
break;
}
break;
}
return FALSE;
}
</code>
Amit
|
|
|
|
|
amitmistry_petlad wrote: TrackPopupMenu (hPopupMenu,TPM_LEFTALIGN, pt.x, pt.y, 0, hList, NULL);
ok i found out the pblm.
u should not specify hList in the TrackPopupMenu function. Instead specify the handle of dialog
( in your case it hWnd ).
nave
|
|
|
|
|
yes ! thanks it done,
but one more, have you seen my code for LVN_KEYDOWN .
Now i want specify it for VK_DELETE only.
right now it works but for all key i want only for "Delete" key from "keyboard"
i had comment the code for VK_DELETE .
HOW ITS WORK FINE?
|
|
|
|
|
hmm. i checked it now. Modify the code as below
if(((LPNMHDR)lParam)->code == LVN_KEYDOWN) <br />
{<br />
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)lParam;<br />
if( pLVKeyDow->wVKey == VK_DELETE )<br />
{<br />
}<br />
}
nave
|
|
|
|
|
thank you very much
|
|
|
|
|
If i delect my file and it is in unicode then TCHAR should treat as WCHAR otherwise TCHAR as CHAR
Is it possible ?
|
|
|
|
|
TCHAR only affects the strings that are in your source code. When you read a data file, you need to know what encoding was used to create the file, and use the appropriate data type (char or wchar_t or an equivalent).
|
|
|
|
|
Actually i want TCHAR as WCHAR for unicode type file otherwise CHAR.
But if i enable unicode in project setting .TCHAR always be WCHAR.
But i want for ascii file it should be CHAR.
|
|
|
|
|
you already asked this several hours ago[^], and the answer has already been given to you.
you'll be able to set TCHAR as WCHAR or CHAR only once in your code, and this will be definite for the compile time (you cannot change the meaning of TCHAR at runtime !).
if you might read unicode or ansi files, you must :
1) determine the encoding type
2) use the appropriate type to read the file (wchar_t for unicode files, char otherwise)
nothing more.
so please understand this, and find an alternative to what you're trying to design as your solution, because you're doing it wrong
|
|
|
|
|
You cannot change the meaning of a TCHAR. When reading files, it would be better for you to create two functions, one to read a unicode file, the other to read an ansi file.
#define _UNICODE
#define UNICODE
#include "tchar.h"
TCHAR *ReadAnsiFile( TCHAR* szFileName )
{
TCHAR TcharBuffer[ size of the file ];
OpenFile();
#ifdef UNICODE
char AnsiBuffer[ size of the file ];
ReadIntoAnsiBuffer();
ConvertBufferToUnicode();
#else
ReadIntoTcharBuffer();
#endif
Return TcharBuffer;
}
TCHAR *ReadUnicodeFile( TCHAR* szFileName )
{
TCHAR *TcharBuffer[ size of the file ];
OpenFile();
#ifdef UNICODE
wchar_t UnicodeBuffer[ sizeoffile ];
ReadIntoUnicodeBuffer();
ConvertToAnsi();
#else
ReadIntoTcharBuffer();
#endif
Return TcharBuffer;
}
int main()
{
TCHAR *ReadFile;
if ( FileIsUnicode )
ReadFile = ReadUnicodeFile();
else
ReadFile = ReadAnsiFile();
}
|
|
|
|
|
If you think that you can change reality by just asking the same question again, then I suggest a career in marketing.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
asdtry wrote:
If i delect my file and it is in unicode then TCHAR should treat as WCHAR otherwise TCHAR as CHAR
Is it possible ?
TCHAR is defined as
#ifdef UNICODE
#define TCHAR wchar_t
#else
#define TCHAR char
#endif
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and you
|
|
|
|
|
How to create a sample code for ptinter driver to produce the tiff image in vc++
shanmugapriya
|
|
|
|
|
What are you trying to do? How do TIFF images relate to printer drivers?
|
|
|
|
|
Is there a way to find whether an exe generating memory leaks or not, without using any tools. We dont have its code, only exe is available.
Thank you.
KIRAN PINJARLA
|
|
|
|
|
Use the task manager, if the 'Memory Usage' is constantly increasing then there is more than likely a leak.
|
|
|
|
|
WalderMort wrote: Use the task manager, if the 'Memory Usage' is constantly increasing then there is more than likely a leak.
In fact those numbers in the Task Manager only reveals how much address space your application is using. It doesn't necessarily mean that there's a memory leak.
It could be memory that has been both allocated and deallocated, but may be reused.
Read this[^] for more info.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
|
|
|
|
|