|
Some how, when I opened up my project today, my class wizard was corrupt and woulnt open. An error popped up saying "Cannot access the ClassView information file. ClassView information will not be available." The clw file was there, but contained no class info.
When I deleted it, and went into the View->ClassWizard to rebuild it, I included all the files within my project. However, the new clw file still does not contain class info and I cannot browse my classes any more. Any ideas??
I did not create my class using the ClassWizard, but they always showed up in the ClassView and WizardBar etc. Any ideas on how to get this back? THanks
-C
|
|
|
|
|
Did you delete some project files on accident? If you saved backup copies of the project, then use one of them.
Kuphryn
|
|
|
|
|
I didnt delete any project files that I know of.
-C
|
|
|
|
|
delete ncb file
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
I deleted the ncb file, but still no luck in rebuilding my ClassView. Any other ideas??
-C
|
|
|
|
|
1. Make sure the none of the files in the project are marked read-only.file is not marked read-only
2. Make sure no other instance of VC++ is open (sometimes VC++ does not release files when a workspace/project is closed). Also, check in the Task Manager that there is only one msdev.exe instance running - Sometimes the main window closes, but a msdev instance is still running in the background.
Bikram Singh
|
|
|
|
|
It worked for me when i deleted .clw and .ncb and rebuilt it.
|
|
|
|
|
Hi,
I have a list ctrl with 10 rows (items) and 4 subitems. Initially color of 4th subitem for each row is green. I achieved it through Custom Draw feature. Now i am displaying a popup menu items on the right click of the any row(item). This popup menu item is having two menu items red and blue. I want that when i select red option then 4th subitem of the selected row turned to red from green. Now to implement this functionality, I am doing like below:
Handler of the OnRed() is :
void CTestListCtrlView::OnRed()
{
int iItemIndex;
iItemIndex = m_ListCtrl.GetSelectionMark();
LVITEM Item;
Item.mask = LVIF_PARAM;
Item.iItem = iItemIndex;
Item.iSubItem = 4;
Item.lParam = RED;
BOOL x = m_ListCtrl.SetItem(&Item);
m_ListCtrl.SendMessage(WM_NOTIFY,NM_CUSTOMDRAW,(LPARAM)&Item);
}
Custom Draw Handler is:
void CTestListCtrlView::OnCustomdrawMyList(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
COLORREF crText, crBkgnd;
LVITEM rItem;
ZeroMemory ( &rItem, sizeof(LVITEM) );
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
rItem.iItem = nItem;
m_ListCtrl.GetItem ( &rItem );
LPARAM lp = rItem.lParam;
if (pLVCD->iSubItem == 4 && rItem.lParam == 0 )
{
TRACE("In the Green List");
crText = RGB(0,0,0);
crBkgnd = RGB(0,255,0);
pLVCD->clrText = crText;
pLVCD->clrTextBk = crBkgnd;
}
if (pLVCD->iSubItem == 4 && rItem.lParam== 1 )
{
TRACE("In the Red List");
crText = RGB(0,0,0);
crBkgnd = RGB(255,0,0);
pLVCD->clrText = crText;
pLVCD->clrTextBk = crBkgnd;
}
*pResult = CDRF_DODEFAULT;
}
}
Initially when list control is first drawn i am getting 4th subitem as GREEN bot when i am selecting RED through pop up menu item, 4th subitem is not getting red. In fact application is getting crashed and application never reaches to "In the Red List".
Please help me what i am doing wrong?. I am attaching the code sample also,please heve a look into it.
Thanks in Advance
Amit
|
|
|
|
|
There is no need to send a WM_NOTIFY message to the list control. One solution is just set the item's data, which in this case is index 3, to RED.
struct SubItemData
{
...
};
SubItemData *pSID = new SubItemData;
...
m_ListCtrl.SetItemData(INDEX, static_cast<dword>(pSID));
...
You got the idea.
Kuphryn
|
|
|
|
|
Instead of setting Item properties through SetItemData, i set the property through LVITEM structure and removed SendMessage as suggested by you but still not successful. Here is the code
void CTestListCtrlView::OnPopupRed()
{
LVITEM *Item = new LVITEM;
Item->iItem = 2;
m_ListCtrl.GetItem(Item);
Item->mask = LVIF_PARAM;
Item->lParam = 1; // 1 mean red
m_ListCtrl.SetItemData(iItemIndex,(DWORD&)*Item);
m_ListCtrl.Invalidate();
m_ListCtrl.UpdateWindow();
}
I included Invalidate() and UpdateWindow() so that my custom draw method OnCustomdrawMyList() could be called but still i am not getting the lparam value as 1 in my custom draw method. Please help.
Thanks for the reply.
|
|
|
|
|
What's up with dereferencing Item?
m_ListCtrl.SetItemData(iItemIndex,reinterpret_cast<dword>(Item));
Kuphryn
|
|
|
|
|
Hi all.
I have a win32 window where I display my little 3D game using DX9 in full window size. I managed to load a QuickTime movie in same window but instead of movie I can still see my game rendered. Only while resizing the window teh movie appears.
Also if I disable my 3D drawing then I can see the movie correctly.
I am sure its something wrong with HWNDs or its something else?
How can I solve it.
Actually can somebody adivise me on this problem. What is the proper way to handle these two things. (displaying a movie and displaying 3D game world)?
Note: I only want to have a single window and displa one thing at a time. So, when I want to watch a movie then the movie will be displayed in full window size and should be able to switch with a single key press back to my game again occupaying the entire window display.
Apparently in windows I can create more than one display surfaceses. Should I do that or I can easily use one surface to manage that?
Later I am planning to capture my 3D game into a movie file but I guess I'll worry about that later
Thanks for your help in advance.
----------------------------
Robert Stuliglowa
|
|
|
|
|
In my MFC application the main window loads in direct x, but what im finding is that the status and toolboxes are overwritten by it i can resize the DX window to fit and not overwrite, by doing this i need to create a resize (OnSize) function to handle it, but when i actually do this the toolbar and status box do not show at all, what could be causing this?
Status Bar
m_StatusBar = new CStatusBar();<br />
m_StatusBar->Create(this);<br />
m_StatusBar->SetIndicators(idArr,2);<br />
m_StatusBar->SetPaneInfo(0,1,SBPS_NORMAL,200);<br />
m_StatusBar->SetPaneInfo(1,2,SBPS_NORMAL,100);<br />
m_StatusBar->SetPaneText(0,"Welcome To Map Edit");<br />
m_StatusBar->UpdateWindow();<br />
OnSize function
void CRootWin::OnSize(UINT nType, int cx, int cy)<br />
{<br />
CWnd::OnSize(nType, cx, cy);<br />
<br />
RECT rectSize;<br />
GetClientRect(&rectSize);<br />
<br />
rectSize.top += 30;<br />
m_RenderWin->MoveWindow(&rectSize, true); <br />
}
Toolbar Setup
if(!m_DrawTools.Create(this)) <br />
{ <br />
MessageBox("Creating Toolbar","Failed",MB_OK);<br />
}<br />
if(!m_DrawTools.LoadToolBar(IDR_MENU_POLYGON)) <br />
{ <br />
MessageBox("Loading Toolbar","Failed",MB_OK);<br />
}
|
|
|
|
|
Does anyone know if you can fill the clipboard using the CDC object?
This would be great becuase the app is already drawing the text on the window, I just want to get the text hopefully using some type of clipping function and the CDC.
Thanks.
|
|
|
|
|
You can add Text to the clipboard (real text, not a picture of text, TCHAR*/LPCTSTR/etc). You can also add Bitmaps to the clipboard.
You can add many other data-formats but these sound like the two for you.
Now it depends which one you want. If you want the text then 'just add it'.
If you want a bitmap, you can either have your app draw into a temporary-dc and then save this DC/CDC into a bitmap and store that bitmap in the clipboard. or you can just snapshot your main-window or whichever-window and do the same trick.
|
|
|
|
|
I can fill the clipboard with text but in a CView document how is the best way to track and retrieve what is highlighted?
I can track the movement of the mouse and from the starting and stopping point create a CRect. Then with that CRect I was hoping to use the CDC and get the text that the user wants to place in the clipboard.
|
|
|
|
|
it's not that simple.
depending on the application, you will either get a bitmap, or get some kind of structured data, for example, if it's a graphical application, what you select on screen ( with a selection rectangle ) will usually be some kind of basic graphic object ( size, position, color, ... ); or maybe simply a bitmap.
after that, you will need to retrieve the data from the clipboad and "decode" it to be pasted to the applications.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
So to understand when wanting to copy text from a CView, one has to track the text. Then when the user defines a rectangle, the app has to use the define rectangle and then search the tracked text for the starting and stopping point. Then move that highlighted text to clipboard
|
|
|
|
|
is you view a graphic view ( i.e. drawn text ) or a text view ( Editable text ) ?
if it's a graphical view, you need to have a way to be able to know that text is in the selection rectangle because it will ( ? ) be pixels, not text.
if it's an editable text view, ( CEdit or CRichEdit ), you should be ready to go, with appropriate class members to select the text and copy it to the clipboard.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Very good! When you are drawing the text you need to keep track of were you drew it, if you want the user to be able to select it. With that infomation it should be farely easy to determine what text is contain within the selection rectangle. Note, I said farely easy; in reality the calculation can get quite complicated (depending on font used, text extents and all that).
Good Luck!
INTP
|
|
|
|
|
I am working with MDI apps.It is Explorer Apps. Some of the Global variables were created.I want make it as class variables.I was converted 90%.But I got problem with CListView variables.wherever CListView is there.I try replace with ((CMyListView *)AfxGetApp())->. He was created one ListView variable in CDocument class.I try to replace with m_pDOc->m_ListView. But I am getting Access Violation Errors? Pl Help me..........
dadsadasd
|
|
|
|
|
Where is it declared? Declare it in stdafx.h.
Kuphryn
|
|
|
|
|
All global variables were declared in one file.
dadsadasd
|
|
|
|
|
Hi,
You cannot cast AfxGetApp() to CMyListView! AfxGetApp() returns a pointer to your main CWinApp.
If you want to get a pointer to your ListView, then try:
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
if (pFrame && pFrame->GetSafeHwnd())
{
CMDIChildWnd* pChild = (CMDIChildWnd *)pFrame->GetActiveFrame();
if (pChild && pChild->GetSafeHwnd())
{
CMyView* pView = (CMyView*)pChild->GetActiveView();
}
}
Assuming that it is the current view...
If you have any questions, I'd be happy to help,
Andy
|
|
|
|
|
Thanks for reply,
I got problem at GetDocument() function.
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COamDoc)));
return (COamDoc* )m_pDocument;
Here I am getting assertion failure
dadsadasd
|
|
|
|