|
Some times it is caused by an syntax error occuring before the current point.
Some times the information is just not available yet (try recompile).
Trust in the code Luke. Yea right!
|
|
|
|
|
Hi,
Is there a way to create a modeless dlg that we cannot move so that it always remains at the same place that I have created it?
Thanks
Everything's beautiful if you look at it long enough...
|
|
|
|
|
You can easily do this via your dialog's OnWindowPosChanging() method. When the modeless dialog is created, save it's window rect to a member variable. Then in OnWindowPosChanging(), change the 'x', 'y', 'cx', and 'cy' values of the WINDOWPOS structure.
BEGIN_MESSAGE_MAP(CModelessDlg, CDialog)
//{{AFX_MSG_MAP(CModelessDlg)
//}}AFX_MSG_MAP
ON_WM_WINDOWPOSCHANGING()
END_MESSAGE_MAP()
BOOL CModelessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
GetWindowRect(m_rect);
return TRUE;
}
void CModelessDlg::OnWindowPosChanging( WINDOWPOS* lpwndpos )
{
lpwndpos->x = m_rect.left;
lpwndpos->y = m_rect.top;
lpwndpos->cx = m_rect.Width();
lpwndpos->cy = m_rect.Height();
}
|
|
|
|
|
This is another way to do it. To move the dialog the user should drag the dialog caption. you can override the WM_NCHITTEST message and disable the HTCAPTION result from reaching hte system.
the could should be like this
UINT CMyDlg::OnNcHitTest(CPoint point)
{
UINT hitResult = CDialog::OnNcHitTest(point);
if(hitResult == HTCAPTION)
return HTNOWHERE;
return hitResult;
}
|
|
|
|
|
There is another simple way to do it.
To move the dialog the user must drag the caption bar, thus you can override the WM_NCHITTEST message and disable the system from recognizing that the mouse is in the caption bar. This code shows ho that is done:
UINT CMyDlg::OnNcHitTest(CPoint point)
{
UINT hitResult = CDialog::OnNcHitTest(point);
if(hitResult == HTCAPTION)
return HTNOWHERE;
return hitResult;
}
|
|
|
|
|
If the dialog has a system menu the keyboard can be used to move it, so this isn't good enough. OnGetMinMaxInfo() may do the trick.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Hi,
Here is my problem. I want to give a non-rectangular shape to my dialogbar. So I created a dialog ressource, a CDialogBar derived class and I created my dialog into my CMainFrame class.
In my CDialogBar derived class, I overide OnCreate():
int MyDlgBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogBar::OnCreate(lpCreateStruct) == -1)
return -1;
// Create a 'CRgn' object
CRgn rgn;
CRect rect;
GetWindowRect(&rect);
rgn.CreateEllipticRgnIndirect(&rect);
// Set the windows region
SetWindowRgn((HRGN)rgn.GetSafeHandle(), TRUE);
// Detach the 'CRgn' object from the region or else the
// 'CRgn' destructor would close the 'HRGN' handle when 'rgn'
// goes out of scope
rgn.Detach();
return 0;
}
The problem is that I can see the shape that I wanted, but the areas where I'm suppose to see the App Background, are not refreshed. I see my desktop unstead.
any ideas?
Thanks;)
Everything's beautiful if you look at it long enough...
|
|
|
|
|
you can try activeskin software .its very easy to modify any shape of window, toolbar, button and many more. its support visual basic and visual c++.
|
|
|
|
|
ok,
Thanks for the answer, but I would like to do it the hard way. Somebody wiser than me said that it's the best way to learn
Regards
Everything's beautiful if you look at it long enough...
|
|
|
|
|
One possible solution is to draw to the non-client area before your dialog bar is drawn. This could be done by the parent or you could get the DC for the parent and then fill in the area before drawing your dialog bar.
The problem you are having is do to the fact that Windows (or MFC) thinks your dialog bar is rectangular and, therefore, is avoiding drawing the same area twice.
Good Luck!
|
|
|
|
|
Is it possible to do drag and drop files on systray?
Mazy
No sig. available now.
|
|
|
|
|
Hello,
Where can I get MS DataGrid control?
I am using Visual C++ 6.0 Introductory Edition? I don't have DataGrid control in the list of registered ActiveX controls?
Can I download it from somewhere?
Thanks
-Lobster B
|
|
|
|
|
What's a good software package for printing out code?
I was just handed a large project written in VC++ IDE, and asked to find and analyze a few algorithms in it. I'd like to start by printing it (you know why -- so I can spread it out and look at lots of code sections at once). But I really dislike the way VC++ prints code, which doesn't look anything like what it displays on the screen (no colors, different font, etc.) Moreover, it looks like I would need to make a selection of each and every file that I want to print, which seems silly since I want them all.
Can anyone recommend a good software package? I have a color printer, and would really prefer formatted printout in color.
|
|
|
|
|
Our programmer's editor, ED for Windows does color syntax highlighting to color printers. You can just print a selection etc.
I'd also suggest having a close look at its Source Database capabilities which provide excellent code navigation around large complex projects, especially if you are unfamiliar with the code base. There is also a very good multithreaded Find in Files and .... See the "Top 11 Fetaures" list and screen shots on our Web site for a quick overview.
You can download a free trial from our Web site www.getsoft.com[^] Let me know if I can help with any other questions you may have.
Neville Franks, Author of ED for Windows. www.getsoft.com
Make money with our new Affilate program
|
|
|
|
|
Hi,
I need those 2 functions : ImageList_Read & ImageList_Write functions... It seems they already exist in comcntl32 . More of this I’ve found this code :
In Winctrl2.cpp
#ifndef _AFX_NO_OLE_SUPPORT
extern "C"
{
HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
BOOL WINAPI ImageList_Write(HIMAGELIST himl, LPSTREAM pstm);
}
#endif
…
BOOL CImageList::Write(CArchive* pArchive)
BOOL CImageList::Read(CArchive* pArchive)
This is what I need but I’m unable to use it because it is in a #ifndef _AFX_NO_OLE_SUPPORT compilation condition. So, I don’t know how I can access it.
What is the #ifndef _AFX_NO_OLE_SUPPORT for? Where does it come from?
I really need ImageList_Read & ImageList_Write or BOOL CImageList::Write(CArchive* pArchive), BOOL CImageList::Read(CArchive* pArchive)
Can anybody help me please? Is there a sample project somewhere that uses the ImageList_Read & ImageList_Write functions?
Thank you very much in advance.
Best regards
Guy LECOMTE
|
|
|
|
|
Hi,
I have troubles with CRecentFileList.
I want to manage the Recent Files manually if I do an "Open" or a "Save As" in my SDI-Document.
My RecentFileList has the ID "Hi,
I have troubles with CRecentFileList.
I want to manage the Recent Files manually if I do an "Open" or a "Save As" in my SDI-Document.
My RecentFileList has the ID "ID_FILE_MRU_FILE1" in my menu "ID_MAINFRAME".
This is my code, which I call at an "Open" or a "Save As":
void CMainFrame::setMRU(CString File)
{
CRecentFileList* m_pMRU;
m_pMRU = new CRecentFileList( 1, _T("Software\\tsSoft\\nm\\MRU"), _T("File#%d"), 4 );
m_pMRU->ReadList();
char* a = (char*) malloc(File.GetLength()+1);
sprintf(a,"%s",File.GetBuffer(File.GetLength()));
//MessageBox((*m_pMRU)[0]+"Pferd",(*m_pMRU)[0],MB_OK);
//MessageBox((*m_pMRU)[1]+"Pferd",(*m_pMRU)[1],MB_OK);
if( File.GetLength()>0 ) m_pMRU->Add(a);
m_pMRU->WriteList();
// Eintrag suchen und überschreiben
CCmdUI* cmdUI = new CCmdUI();
cmdUI->m_nID = ID_FILE_MRU_FILE1;
cmdUI->m_pMenu = AfxGetMainWnd()->GetMenu()->GetSubMenu( 0);
for( cmdUI->m_nIndex=0; cmdUI->m_nIndex < cmdUI->m_pMenu->GetMenuItemCount(); cmdUI->m_nIndex++) {
if( cmdUI->m_pMenu->GetMenuItemID(cmdUI->m_nIndex)==cmdUI->m_nID) {
m_pMRU->UpdateMenu(cmdUI);
break;
}
}
}
What is the problem with it?
I got 2.
First, I can't see my Files in the registry at "Software\\tsSoft\\nm\\MRU" and I don't know why and second I got an Assertion-Error at "m_pMRU->UpdateMenu(cmdUI);"
It will be very nice, if someone can help me to solve my problem!
Greetings,
Tobias
PS: Excuse my bad english!" in my menu "ID_MAINFRAME".
This is my code, which I call at an "Open" or a "Save As":
void CMainFrame::setMRU(CString File)
{
CRecentFileList* m_pMRU;
m_pMRU = new CRecentFileList( 1, _T("Software\\tsSoft\\nm\\MRU"), _T("File#%d"), 4 );
m_pMRU->ReadList();
char* a = (char*) malloc(File.GetLength()+1);
sprintf(a,"%s",File.GetBuffer(File.GetLength()));
//MessageBox((*m_pMRU)[0]+"Pferd",(*m_pMRU)[0],MB_OK);
//MessageBox((*m_pMRU)[1]+"Pferd",(*m_pMRU)[1],MB_OK);
if( File.GetLength()>0 ) m_pMRU->Add(a);
m_pMRU->WriteList();
// Eintrag suchen und überschreiben
CCmdUI* cmdUI = new CCmdUI();
cmdUI->m_nID = ID_FILE_MRU_FILE1;
cmdUI->m_pMenu = AfxGetMainWnd()->GetMenu()->GetSubMenu( 0);
for( cmdUI->m_nIndex=0; cmdUI->m_nIndex < cmdUI->m_pMenu->GetMenuItemCount(); cmdUI->m_nIndex++) {
if( cmdUI->m_pMenu->GetMenuItemID(cmdUI->m_nIndex)==cmdUI->m_nID) {
m_pMRU->UpdateMenu(cmdUI);
break;
}
}
}
What is the problem with it?
I got 2.
First, I can't see my Files in the registry at "Software\\tsSoft\\nm\\MRU" and I don't know why and second I got an Assertion-Error at "m_pMRU->UpdateMenu(cmdUI);"
How can I make it working right? So that my Recent Files are shown at "ID_FILE_MRU_FILE1" ?
It will be very nice, if someone can help me to solve my problem!
Greetings,
Tobias
PS: Excuse my bad english!
|
|
|
|
|
Hi,
ich have troubles with
|
|
|
|
|
Hi i would like to know how to open a folder, from hitting a button on a dialog wizard/app.
What i want to achieve is this:
This wizard i want to create will create a file which is needed by a 3rd party program. What i want to do is once the button is pressed which creates the new folder, i want to press another button which will open up the folder where that new file was created. I dont ned to know how to create buttons etc. Its just how do i open a normal folder from clicking on a button?
Any ideas?
kind regards
Dave Long
|
|
|
|
|
What do you mean "open" a folder? If the program creates a file in a specific folder and that folder does not exist, then the program should loop through the full folder path and create each folder accordingly beginning at the parent folder, i.e. "C:\"
Kuphryn
|
|
|
|
|
The folder already exists and the file that gets created is placed in that existing folder. All i want is to be able to click a button on the wizard to display that folder without having to manually open it by double clicking icons until i get to the folder to display the file.
Dave Long
|
|
|
|
|
ShellExecute() with the command line being the folder path.
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|
|
Hi,
Try the following code, it will open the specified folder in
explorer.
void UserDialog::OnButtonClicked()
{
ShellExecute(GetSafeHwnd (), "open", "C:\\dave\\folder",
NULL, NULL, SW_SHOWNORMAL);
}
regards
~Hari~
|
|
|
|
|
Hi Hari
Great thanks that worked a treat.
kind regards
Dave Long
Hi,
Try the following code, it will open the specified folder in
explorer.
void UserDialog::OnButtonclicked()
{
ShellExecute(GetSafeHwnd (), "open", "C:\\dave\\folder",
NULL, NULL, SW_SHOWNORMAL);
}
regards
~Hari~
|
|
|
|
|
I'm having trouble passing a pointer to and array. I've created a class that has and array of 10.
CString pArray[10];
...
..
return * pArray;
Is this right?
Then in my calling function I'm not sure how to handle this pointer. Any suggestions?
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Tom Wright wrote:
return * pArray;
Is this right?
Unfortunately no. In the absense of any other code, I will suggest the following, though it may not work.
return &pArray[0];
Questions for you, since the array is contained within a class, istead of providing direct access to the member, why not provide Set/Get methods for the strings? Why not use the CStringArray class? Or even the STL equivalent?
Chris Meech
"what makes CP different is the people and sense of community, things people will only discover if they join up and join in." Christian Graus Nov 14, 2002.
"Microsoft hasn't ever enforced its patents. Apparently they keep them for defensive reasons only. Or, they could be waiting 'til they have a critical mass of patents, enforce them all at once and win the game of Risk that they're playing with the world." Chris Sells Feb 18, 2003.
|
|
|
|