14-05-2006, 22:07
|
|
|
חבר מתאריך: 12.08.04
הודעות: 993
|
|
התפריט לא נעלם אוטומטי ( C++ וAPI32 )
בס"ד
הלולאה הראשית נראית כך
קוד PHP:
MSG msg; do { if(PeekMessage(&msg,0,0,0,0)!=0) { GetMessage(&msg,0,0,0); TranslateMessage(&msg); DispatchMessage(&msg); } }while (!isStopLoop && msg.message != WM_QUIT);
יצרתי חלון בשביל לקבל את האירועים של התפריט
קוד PHP:
WNDCLASSEX wc; ::ZeroMemory(&wc,sizeof(wc)); wc.cbSize=sizeof(WNDCLASSEX); wc.hInstance=hInst; wc.lpfnWndProc=Popup::WindowProc; wc.lpszClassName=MYCLASS_ID; wc.style=CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; RegisterClassEx(&wc); hWnd=CreateWindowEx(0,MYCLASS_ID,"",WS_OVERLAPPEDWINDOW,0,0,0,0,0,0,hInst,0); if(hWnd==0)throw(Err("Error creating window"));
אני מייצר את התפריט כך
קוד PHP:
hMnu=CreatePopupMenu(); SetMenu(hWnd,hMnu); if(hMnu==0)throw(Err("Can't create popup menu"));
ומוסיף לתפריט נתונים ככה
קוד PHP:
::AppendMenu(hMnu,MF_STRING,id,str);
ומציג את זה
קוד PHP:
POINT pnt; GetCursorPos(&pnt); TrackPopupMenuEx(hMnu,TPM_LEFTALIGN,pnt.x,pnt.y,hW nd,0); PostMessage(hWnd,WM_NULL,0,0);
התפריט מוצג והכל הולך חלק...
אבל כאשר לוחצים על מקום אחר במסך התפריט לא נעלם
ונשאר תקוע כמו עצם בגרון
בתודה מראש
נ.ב
אם התוכנה שלי מייצרת הודעה אז התפריט נסגר
אני משתמש בVC++ 2003
|