|
I am dynamically adding content to a CDialogBar - when the on-screen capacity is reached i want to add a scrollbar to allow the content to be visable.
I understand that CDialogBar will not allow a Scrollbar - so i'm not really sure what to do. I'm quite limted with a CDialogBar as i need it as part of MDI.
Any help appreciated!
-- modified at 11:05 Monday 7th August, 2006
|
|
|
|
|
|
I was trouble by this problem for a long time!
I insert a new dialog template which ID is IDD_DLG_MYDLG
and create a new dialog class named CMydlg;
and I use this dialog in my application :
ex:
void CMyapp::showDlg(CString str)<br />
{<br />
CMydlg *dlg=new CMydlg;<br />
dlg->Create(IDD_DLG_MYDLG, this);<br />
dlg->ShowWindow(1);<br />
dlg->SetWindowText(str);
}
Now, I click one button to show my dialog
ex:
void CMyapp::showMydlg(void)<br />
{<br />
showDlg("my dialog 1");<br />
showDlg("my dialog 2");<br />
}
then, I want to know that the first dialog I created is close or still active,
I don't know how to specify that the dialog , which has some mark to specify it, or else , I use the function showMydlg, it will create lots of dialog, I want to show it if it was not created, or create it if it is not showing!
if some one know ,please tell me , it was so trouble thing, that some one use my application, who continuously clicked one button , so many dialog show make me shy!
if you know what I mean , please give me a better way to solve it !
waiting for answers online!
Just my interest for these common things
|
|
|
|
|
First, the problem with your code is that you have a pointer local to a function (the CMydlg *dlg pointer which is in showDlg). You allocate memory for this pointer but when you reach the end of the function, you don't have any grasp over the pointer anymore. Thus, this will result in a memory leak. Instead of making it local in the function, make it a member of your class (CMyapp). This way, you can control if this dialog is already created (pointer points to a valid dialog class) and you can retrieve the status (if the dialog is visible or not).
And, furthermore, there is no need to make it a pointer, just show/hide it with the CWnd::ShowWindow function.
|
|
|
|
|
I know what you mean, you say that I make it a member of my dlg class.
that creating it when I use it ,and assert it , and show it correctly,
is it?
But the problem is that :
I create a CListCtrl,
and add many item at it !
You know the ICQ:
I simulate it ,
when I dbclicked one item, show a dlg(this dlg is diffrent by its content),
If I dbclicked the same item, show the dlg I just created!
but if the list has so many items, ex 1000,
shall I prepare 1000 pointer at my application as a member at a class?
so I want to find a way that I want to create it when I want to show it !
just I want to decrease the class member pointer!
If it's no way , I think I only use dlg* mydlg[1000] to solve it !
Just my interest for these common things
|
|
|
|
|
xuwenq88 wrote: but if the list has so many items, ex 1000,
shall I prepare 1000 pointer at my application as a member at a class?
So, you have also 1000 different dialog templates ?
Or is it the same dialog but with different data in it ?
In the latter case, you can simply pass the data to the dialog before making it visible.
|
|
|
|
|
I think it so long time, does the clist or ctypedptr can solve it?
Just my interest for these common things
|
|
|
|
|
hi i had written the code to block the specific port using packet filtering API,all work fine but "Pfbindinterfacetoindex" execute successfully but did not block the port so i googled and find another API pfbindinterfacetoindex but it still fails the only problem could be here where give index
GetIpAddrTable( NULL, &dwIface, FALSE);
pIpTable = (PMIB_IPADDRTABLE) malloc(sizeof(PMIB_IPADDRTABLE));
GetIpAddrTable(pIpTable,&dwIface,FALSE);
for (pIpAddr = &pIpTable->table[ dwIface = 0]; dwIface < pIpTable->dwNumEntries; ++dwIface)
++pIpAddr;
PfBindInterfaceToIndex(ihandle,pIpAddr->dwIndex,PF_IPV4,(PBYTE)ip);
tell me what is wrong with this why this is not working i had spend atleast a 1 and half week on that but was failing.
Tasleem Arif
|
|
|
|
|
Maybe instead of
GetIpAddrTable( NULL, &dwIface, FALSE);
pIpTable = (PMIB_IPADDRTABLE) malloc(sizeof(PMIB_IPADDRTABLE));
. . .
you should try this:
dwIface = 0;
GetIpAddrTable( NULL, &dwIface, FALSE);
pIpTable = (PMIB_IPADDRTABLE)malloc(dwIFace);
. . .
I hope it helps.
|
|
|
|
|
it did not work 2.however thanks for reply.
Tasleem Arif
|
|
|
|
|
My project's Classview has become cluttered with a lot of classes and global functions. Many of these are used internally by a component. Is there a way to remove the ones from Classview that I find unnecassary. I am using Microsoft eMbedded Visual C++. Thanks for any help.
-Steve
|
|
|
|
|
You can create folders in ClassView - right-click the project and select New Folder. You can then drag classes into the folder. Unfortunately you can't manage global functions in this way.
An alternative is simply to remove the headers from the project. They aren't required to be part of the project in order to compile - dependency analysis will pick them up. Obviously you should not remove them from source control, if you're using IDE integrated source control.
|
|
|
|
|
Hi all,
I am writing a plugin for windows media player.(UI pluging-Setting)
And I am using its wizard to create it. But when the OnPositionChange is called
oldposition and newPosition give a number like -119927078 or 182007653.
Please help me.
Cheers.
-- modified at 9:49 Monday 7th August, 2006
Every new thing you learn,Gives you a new personality.
|
|
|
|
|
Hello comunity,
i use an COleSafeArray to write data to an excel file, and this works fine, but seems like they(data) are not sorted!
Is there any way to sort an COleSafeArray?
Thanks!
break;
|
|
|
|
|
Sort your items before putting them in the COleSafeArray container, or use Excel's automation features to sort the items after they are stored in the xls file. COleSafeArray doesn't have any built-in sorting functionality.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Hello Zac,
thax, that works, sorting before putting in COleSafeArray!
regards
break;
|
|
|
|
|
hi all
how to capture mouse movement over button event. Specifically i need a event when mouse moves over a button and another event when it goes away from that button.
I am doing this in Win32 C based application.
If u have any link to sample code pls specify that.
Thanks
Manjunath S
Bangalore
|
|
|
|
|
have a look at _TrackMouseEvent
|
|
|
|
|
I am using this function, but not getting event when mouse moves over button.
The code i am using is,
TRACKMOUSEEVENT track;
track.cbSize = sizeof(TRACKMOUSEEVENT);
track.dwFlags = TME_HOVER | TME_LEAVE;
track.hwndTrack = bHandle; //handle to the button
track.dwHoverTime = 1000;
_TrackMouseEvent(&track);
And i am checking WM_MOUSEHOVER, WM_MOUSELEAVE messages.
Is it correct. thanks for ur suggestions.
Manjunath S
Bangalore
|
|
|
|
|
|
My program is of SDI . a model dialog should be poped up when it is running,but the dialog poped up only I press the Alt button on the keyboard sometimes,why?how to resolve this problem ?
|
|
|
|
|
You've not provided nearly enough information. For starters, what code do you have in place to create/display the dialog?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Blew is my code:
CELinkConfiguratorView is the view of my SDI application,Online() is the handler message of a menu, CCBrowseOnline is the class of a model dialog.
when click the menu,the the DlgBrowse dialog should be poped up,but it didn't pop up sometimes .but it poped up after I press the Alt button on the keyboard. why?how to resolve this problem?
void CELinkConfiguratorView::OnOnline()
{
// TODO: Add your command handler code here
CELinkConfiguratorDoc* pDoc = GetDocument();
// Open the serial port
if(pDoc->ComportInfo.ubComInterface == 0)
{
CString msg;
if(!m_Port.Open(ComportNur,
ComportBr, Parity,DataBits,StopBits))
{
msg.Format ("*** Error: Can't open com port");
AfxMessageBox(msg);
return;
}
}
CBrowseOnline DlgBrowse;
DlgBrowse.m_BrowseStr = "Start Browse NetWork...";
if(DlgBrowse.DoModal() == IDOK)
{
isCanSendNew = true;
DownDirect = RST_REQ;
}
}
BOOL CBrowseOnline::OnInitDialog()
{
CDialog::OnInitDialog();
// Inial the progress bar
m_ProCheckOnline.SetRange (0, 63);
m_ProCheckOnline.SetStep (1);
m_ProCheckOnline.SetPos (0);
// start timer
SetTimer(1,100,NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBrowseOnline::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(CurrentCtrl == 3) // upload command
{
if(CurrentMacid == 0)
{
str.Format ("Uploading module setting...");
}
else if(CurrentMacid < 63)
str.Format ("Upload Node %d from Scanner",CurrentMacid);
else
str.Format ("Upload completed.");
}
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
|
|
|
|
|
What if you changed the OnOnline() method to:
void CELinkConfiguratorView::OnOnline()
{
CBrowseOnline DlgBrowse;
DlgBrowse.m_BrowseStr = "Start Browse NetWork...";
if(DlgBrowse.DoModal() == IDOK)
{
isCanSendNew = true;
DownDirect = RST_REQ;
}
} Does the dialog appear now?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi
I have a propertypage.I have two edit controls.For the first edit control it should have a range of 5 to 50 and for the second it should be 60 to 100.Whenever the entered data was not in this range I gave an error message and set the focus using SetFocus().I have done this in the OnApply() also.
The problem is I have entered the data in the first control and even after receiving the error message and the focus was set also,I have neglected that and entered the data in the second control.For that also I did the same.Finally in the OnApply() also after neglecting the error messages , the dialog has closed.
My requirement is the focus should not go and it has to rise indefinitely if it is not in the range unless I click cancel.Is my approach correct?Please give me a solution.
Thanks in advance.
Sandhya
|
|
|
|