|
Yes CString,
I change the add wizard category to value vs. control since I don't need to control the resource.
Back to the wizard issue - I still got a "can't add/remove because class is read only" message when trying to add a variable but I restarted VS 2005 and it succeeded.
I noticed that when you use the class wizard to place multiple classes into one file it repeats the #includes at every class implementation and it also places a #include for the .h file with path.
I deleted all of these #includes except for the necessary ones at the beginning of the file and so far it seems to have helped but I can't be sure yet.
Just to be clear here is what you might see-
#include "stdafx.h"
#include "Myproject.h"
#include "c:/dir1/dir2/dir3/MyPropertySheetClass.h"
Perhaps the wizard gets confused by the multiple #includes or the inclusion of the path which appears to be unnecessary.
|
|
|
|
|
I would suggest that you try the following.
Close your project and exit visual studio. Then, delete any .ncb, .aps, or .clw file that you find in the project folders. Next restart visual studio and try again.
This sometimes can occur when the .ncb file becomes corrupted. Those files will be rebuilt as needed automatically.
Hope this helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
I am currently developing an application using C++ and MFC. After gathering user data, it runs for a bit and produces its output in a separate window. I created this output window by deriving from the class CframeWnd and then defining CoutputWindow::OnCreate. I would consider this to be fairly standard.
It works and the output displayed is correct but I would the user to be able to highlight part or the entire window using his/her mouse and then type control-C to copy the highlighted text to the clip board. That part does not work. Is there an easy way for me to make this work? Did I make the wrong decision when I derived from CframeWnd? By any chance, is there a standard class in MFC that supports this feature with little or no additional work by the programmer?
Bob
|
|
|
|
|
I would suggest putting a ES_READONLY edit box in the floating output window, and putting text into that. Thena all the selection and cut and paste comes free.
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Iain,
Thanks for the response. I added the flag ES_READONLY to the create call of the window. However, it did not have any effect. Here is what the code now looks like:
Create( NULL, TEXT("CtlDemo2"),<br />
WS_OVERLAPPEDWINDOW|ES_READONLY, rectDefault,<br />
NULL, MAKEINTRESOURCE( IDR_MAINFRAME ) );<br />
Is that what you meant? Is there something else I should do to make it work?
Thanks
Bob
|
|
|
|
|
BobInNJ wrote: I added the flag ES_READONLY to the create call of the window.
What type (i.e., class) of window?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
The class of the window is COutputWindow (my class) and it is derived from CFrameWnd.
Bob
|
|
|
|
|
Those are MFC classes, not window (or system) classes. In any case, ES_READONLY is only for "Edit" classes.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
Thanks for the response. Well, I guess using ES_READONLY will not work. Do you have a solution that will work for me?
Bob
|
|
|
|
|
BobInNJ wrote: Do you have a solution that will work for me?
Have you tried Iain's suggestion?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
Thanks for the response. Please see my response to him in this thread.
Bob
|
|
|
|
|
David's right - you didn;t read my suggestion fully.
I could spell things out a bit more though.
I assume you need a frame to get the floating-ness, or dockaability. Or look at (eg) CControlBar , or CDialogBar .
Rather than just a Frame window, create a child window inside that frame. That child window should be an EDIT window, or a CEdit . ES_READONLY would be applicable then.
I hope that is clearer.
You can;t just use things blindly. If you don't know about ES_READONLY, then you should have looked it up on MSDN. There, it will tell you that it is an edit style. It's at best meaningless when used with another window. At worst, it could do something bad.
I hope that helps?
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Iain,
Thanks for the response. However, it does not help. I tried some of the things you suggested but it did not work. I would be happy to send you the code. I am still badly confused.
Bob
|
|
|
|
|
BobInNJ wrote: Did I make the wrong decision when I derived from CframeWnd?
Not exactly; but it is usually best to put a CView derived window in the client area of the Frame. I think that either CEditView or CRichEditView may provide what you are looking for.
|
|
|
|
|
Richard,
Thanks for the response. I tried using the class CEditView in a small test program and the small test program broke. As I understand it, the class CEditView is part of the Document / View model. The test examples that I have tried with the Document / View model did not seem to work or had issues. I am thinking that to change my code to use CEditView is going to be a major change. Do I have that right?
Bob
|
|
|
|
|
Think in more general terms.
CWnd wnd;
wnd.Create("Edit", "My Window", WS_VISIBLE, ...); You could also create a popup window by using CreateEx() instead. If that does not work, then use a dialog with an edit control on it.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
Thanks for the response. However, it is not making sense to me. When I try these things, they do not seem to work. I am badly confused. I tried what you suggested but it did not work.
Bob
|
|
|
|
|
Hello,
I have made a window which is readonly but a cursor appears on the wondow . do i have to remove the cursor.
pritha
|
|
|
|
|
prithaa wrote: do i have to remove the cursor.
How are we to know that?
Do you ever turn the read-only style off? If so, have you considered using a static control instead? What if you disabled the control instead of making it read-only? Have you tried setting the focus to the next control?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
Hi ,
Can we append the _RecordsetPtr with another _RecordSetPtr . Suppose my recordset is having data for 2 rows . There are such 3 recordset. Can we create a new recordsetPtr which will be used to traverse through all these recordsets...is it possible..??
Thanks in advance..
|
|
|
|
|
No, but you could: 1) iterate through each and add to a common structure, or 2) change the query to include the other record sets.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
Hello,
I'm working on an MFC application. For reasons I cannot fathom, there seems to be a problem with inconsistent display of the icons of an icon style CListCtrl between versions of Windows (XP and Vista). On Vista, one of the icons (Debtor statement) is omitted. This only occurs sometimes. When it actually occurs varies from build to build of the application, where changes between builds ought to have no bearing on this at all.
Why might this be? How can the problem be fixed? Here is the relevant code:
CMyReportView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
ReportsCtrl.ModifyStyle(0, LVS_AUTOARRANGE);
// Send an ID_RELOAD rather than calling UpdateStateData() directly - this is
// a hack to work around the problem of no icons being displayed initially
// in release build
SendMessage(ID_RELOAD );
}
CMyReportView::UpdateData()
{
CBitmap sales_bitmap,
daily_reconciliation_bitmap,
debtor_statement_bitmap,
debtor_invoice_bitmap,
voided_items_bitmap,
suspended_sales_bitmap,
stock_count_rep_bitmap,
live_stock_figures_bitmap,
sales_by_item,
pos_download_bitmap;
sales_bitmap.LoadBitmap(IDB_SALES);
daily_reconciliation_bitmap.LoadBitmap(IDB_DAILY_RECONCILIATION);
debtor_statement_bitmap.LoadBitmap(IDB_DEBTOR_STATEMENT);
debtor_invoice_bitmap.LoadBitmap(IDB_DEBTOR_INVOICE);
voided_items_bitmap.LoadBitmap(IDB_ICON_VOID);
suspended_sales_bitmap.LoadBitmap(IDB_SUSPENDED_SALES_ICON);
stock_count_rep_bitmap.LoadBitmap(IDB_STOCK_COUNT_REPORT_ICON);
live_stock_figures_bitmap.LoadBitmap(IDB_ICON_LIVE_STOCK_FIGURES);
sales_by_item.LoadBitmap(IDB_SALES_BY_ITEM_ICON);
pos_download_bitmap.LoadBitmap(IDB_POS_DOWNLOAD_REPORT_ICON);
COLORREF rgbTransparentColour = RGB(255, 255, 255);
imgl.Create(64, 64, ILC_MASK | ILC_COLOR32, 0, 0);
int sales_bit_id = imgl.Add(&sales_bitmap, rgbTransparentColour);
int daily_rec_bit_id = imgl.Add(&daily_reconciliation_bitmap, rgbTransparentColour);
int debtor_stat_bit_id = imgl.Add(&debtor_statement_bitmap, rgbTransparentColour);
int debt_invo_bit_id = imgl.Add(&debtor_invoice_bitmap, rgbTransparentColour);
int voided_itms_bit_id = imgl.Add(&voided_items_bitmap, rgbTransparentColour);
int suspend_sls_bit_id = imgl.Add(&suspended_sales_bitmap, rgbTransparentColour);
int stock_count_bit_id = imgl.Add(&stock_count_rep_bitmap, rgbTransparentColour);
int live_stock_figures_bit_id = imgl.Add(&live_stock_figures_bitmap, rgbTransparentColour);
int sales_by_item_bit_id = imgl.Add(&sales_by_item, rgbTransparentColour);
int pos_day_end_download_bit_id = imgl.Add(&pos_download_bitmap, rgbTransparentColour);
ReportsCtrl.SetImageList(&imgl, 0);
LVITEM lvi0;
lvi0.mask = LVIF_IMAGE | LVIF_TEXT;
lvi0.iSubItem = 0;
lvi0.pszText = "Sales report";
lvi0.iImage = sales_bit_id;
LVITEM lvi1;
lvi1.mask = LVIF_IMAGE | LVIF_TEXT;
lvi1.iSubItem = 0;
lvi1.pszText = "Daily reconciliation report";
lvi1.iImage = daily_rec_bit_id;
LVITEM lvi2;
lvi2.mask = LVIF_IMAGE | LVIF_TEXT;
lvi2.iSubItem = 0;
lvi2.pszText = "Debtor statement";
lvi2.iImage = debtor_stat_bit_id;
LVITEM lvi3;
lvi3.mask = LVIF_IMAGE | LVIF_TEXT;
lvi3.iSubItem = 0;
lvi3.pszText = "Debtor invoice";
lvi3.iImage = debt_invo_bit_id;
LVITEM lvi4;
lvi4.mask = LVIF_IMAGE | LVIF_TEXT;
lvi4.iSubItem = 0;
lvi4.pszText = "Voided items report";
lvi4.iImage = voided_itms_bit_id;
LVITEM lvi5;
lvi5.mask = LVIF_IMAGE | LVIF_TEXT;
lvi5.iSubItem = 0;
lvi5.pszText = "Suspended sales report";
lvi5.iImage = suspend_sls_bit_id;
LVITEM lvi6;
lvi6.mask = LVIF_IMAGE | LVIF_TEXT;
lvi6.iSubItem = 0;
lvi6.pszText = "Stock count report";
lvi6.iImage = stock_count_bit_id;
LVITEM lvi7;
lvi7.mask = LVIF_IMAGE | LVIF_TEXT;
lvi7.iSubItem = 0;
lvi7.pszText = "Live stock figures report";
lvi7.iImage = live_stock_figures_bit_id;
LVITEM lvi8;
lvi8.mask = LVIF_IMAGE | LVIF_TEXT;
lvi8.iSubItem = 0;
lvi8.pszText = "Sales by item report";
lvi8.iImage = sales_by_item_bit_id;
LVITEM lvi9;
lvi9.mask = LVIF_IMAGE | LVIF_TEXT;
lvi9.iSubItem = 0;
lvi9.pszText = "POS day-ends report";
lvi9.iImage = pos_day_end_download_bit_id;
int sales = ReportsCtrl.InsertItem(&lvi0);
ReportsCtrl.SetItemData(sales, 1);
int daily_reconcil = ReportsCtrl.InsertItem(&lvi1);
ReportsCtrl.SetItemData(daily_reconcil, 2);
int debtor_statement = ReportsCtrl.InsertItem(&lvi2);
ReportsCtrl.SetItemData(debtor_statement, 3);
int debtor_invoice = ReportsCtrl.InsertItem(&lvi3);
ReportsCtrl.SetItemData(debtor_invoice, 4);
int voided_items = ReportsCtrl.InsertItem(&lvi4);
ReportsCtrl.SetItemData(voided_items, 5);
int suspended_sales = ReportsCtrl.InsertItem(&lvi5);
ReportsCtrl.SetItemData(suspended_sales, 6);
int stock_count = ReportsCtrl.InsertItem(&lvi6);
ReportsCtrl.SetItemData(stock_count, 7);
int live_stock_figures = ReportsCtrl.InsertItem(&lvi7);
ReportsCtrl.SetItemData(live_stock_figures, 8);
int sales_item = ReportsCtrl.InsertItem(&lvi8);
ReportsCtrl.SetItemData(sales_item, 9);
int pos_download = ReportsCtrl.InsertItem(&lvi9);
ReportsCtrl.SetItemData(pos_download, 10);
ReportsCtrl.SetItemState(ReportsCtrl.GetItemCount() - 1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
}
Any assistance is greatly appreciated.
Regards,
Sternocera
|
|
|
|
|
I seem to have isolated the problem somewhat (It still erratically tends to swing between omitting and not omitting the icon between builds, I guess).
By commenting out:
ReportsCtrl.ModifyStyle(0, LVS_AUTOARRANGE);
I can make the problem disappear (although I have a new problem, which is that the icons are displayed as one big column). Commenting out anything else of note doesn't have the effect of suppressing the problem, so I guess that's progress.
Regards,
Sternocera
|
|
|
|
|