|
It is not the pen you should change, but the font.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
how I change? tell me....
|
|
|
|
|
for example :
m_Font.CreateFont( 15, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, _T("Arial") );
...
HFONT hfontOld;
hfontOld = (HFONT)SelectObject(dc.m_hDC, m_Font);
::SelectObject(dc.m_hDC, hfontOld);
...
Also, you can maybe search and enumerate the font name just in case "Arial" does not exists.
Max.
|
|
|
|
|
Hi all,
I'm trying to implement an explorer type tree view that allows traversing of the drives. My problem is I'm trying to take into account if a removable drive, cdrom, etc. If theres nothing in the drive, then I want to move the selected item back to the previous one. Problem is, when trying to sift through msdn, it isn't clear how to change the states of the items (at least to me). Here's what I'm trying to do (in general):
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*) pNMHDR;
CString strPath = GetPathFromItem (pNMTreeView->itemNew.hItem);
...
if ((hFind = ::FindFirstFile (strPath, &fd)) == INVALID_HANDLE_VALUE) {
CString temp = strPath + _T("is not accessible\n\nThe Device is not ready\n");
CString temp2 = _T("Exploring ") + strPath;
MessageBox(temp,temp2 ,MB_OK | MB_ICONERROR);
pNMTreeView->SetItemState(pNMTreeView->itemNew.hItem,TVIS_SELECTED,
pNMTreeView->SetItemState(m_prevSelection, // Then what?
} else {
this->m_prevSelection = pNMTreeView->itemNew.hItem;
}
You can see where I am confused, when setting the item states. Am I doing this correctly? What do I need to do in order to properly change the items selected.
Any help in the matter it greatly appreciated. thanks alot!
Dan Willis
|
|
|
|
|
Set on:
SetItemState(hItem,TVIS_SELECTED,TVIS_SELECTED); Set off:
SetItemState(hItem,0,TVIS_SELECTED);
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Ah. thank you.
Any ideas on how to check to see if there is a floppy or a cd in the corresponding drives? Seems I really should be checking for disc existance, not file existance on these drives.
Any suggestions?
Dan Willis
|
|
|
|
|
You can use this snippet:
#include <windows.h>
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
using namespace std;
bool exists_drive(const char letter)
{
char nul_file[]="#:\\NUL";
nul_file[0]=letter;
DWORD error_mode=::SetErrorMode(0);
::SetErrorMode(error_mode|SEM_FAILCRITICALERRORS);
struct _stat st;
int res=_stat(nul_file,&st)==0;
::SetErrorMode(error_mode);
return res!=0;
}
int main(void)
{
for(char drive='A';drive<='Z';++drive){
if(exists_drive(drive)){
cout<<drive<<": OK"<<endl;
}
else{
cout<<drive<<": empty"<<endl;
}
}
return 0;
}
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The following code returns no errors and when running through the debugger the set item states all return True, but the Tree View still doesn't update. Any ideas what I'm doing wrong
// if we can't find a file then kaboom, dump an error
if ((hFind = ::FindFirstFile (strPath +_T("*.*"), &fd)) == INVALID_HANDLE_VALUE) {
CString temp = strPath + _T("is not accessible\n\nThe Device is not ready\n");
CString temp2 = _T("Exploring ") + strPath;
MessageBox(temp,temp2 ,MB_OK | MB_ICONERROR);
GetTreeCtrl ().SetItemState(GetTreeCtrl().GetSelectedItem(),
0,TVIF_SELECTEDIMAGE);
GetTreeCtrl ().SetItemState(m_prevSelection,TVIS_SELECTED,TVIF_SELECTEDIMAGE);
GetDocument ()->UpdateAllViews (this, 0x5A, (CObject*) (LPCTSTR) this->m_previousPath);
} else {
// If the selection is valid, then save the selection. If not valid, then
// default back to the previously saved item that was selected. this is to
// maintain consistancy with windows explorer.
this->m_prevSelection = GetTreeCtrl().GetSelectedItem();
this->m_previousPath = strPath;
GetDocument ()->UpdateAllViews (this, 0x5A, (CObject*) (LPCTSTR) strPath);
}
Any ideas? I'm not sure what is going on here, but otherwise my display gets updated just fine.
Dan Willis
|
|
|
|
|
Shouldn't you be using TVIS_SELECTED instead of TVIF_SELECTEDIMAGE ?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
um. lol. oh yeah. how stupid of me . gotta read the instructions COMPLETELY!
Thanks!
I'm working the drive check right now. That's pretty nifty. guess I still have a ton to learn. Thanks alot. I really appreciate this.
Dan Willis
|
|
|
|
|
Ok,
Almost there. Thank you for your help so far. Now I'm correctly checking the drives and it is returning properly. I'm correctly setting the selection of the drives.
But now, for example, if the user selects the floppy drive but there's no floppy in it, I get the error returned and change the selection to the previous selection. problem is even though the selection has changed, the floppy drive is still continously attempted to be read. It's almost as if that selected drive still has focus. Another clue is that after I change the selection, there is still a dotted-line box around the floppy drive, which says to me that the CTreeCtrl still has kept the focus on the Floppy drive and not changed it to the drive I switched the selection to. make sense?
Now what This is my last piece for resolving this one. Any help in the matter is greatly appreciated. Thanks a ton!
Dan Willis
|
|
|
|
|
I think I got it.
Seems that the CTreeCtrl::SetItemState does just that, only sets the TreeItem's state. If you want the Tree to actually set focus to that item, you have to also call CTreeCtrl::SelectItem.
Thanks for the help!
Dan Willis
|
|
|
|
|
I'm thinking of writing a frontend to some command-line tools, so I need a way to capture stdout/stderr from the programs I shell to. Any recommendations on how to do this?
|
|
|
|
|
|
All right! Thanks for the super fast reply!
|
|
|
|
|
Hi All,
I am developing a add-on dll in C++, for which the basic framework is given.
Now, I have to convert it to MFC since I want to make use of the collection classes provided by it. Could any of you tell me the steps, how to convert a C++ project to one which supports MFC?
Any help is highly appreciated.
Thanks,
Jabir.
|
|
|
|
|
It the collections is all you need from MFC, you might want to consider using STL, a standard C++ library for which no additional framework is needed. There are some tutorials here in CP.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks Joaquin M Lopez Munoz. I want to use other things like ADO also along with collection classes like CStringArray, CObList etc. I thought of using MFC because I am very comfortable in it. I do not know STL, so I will have to learn that before using it. Could you please tell me, the steps to convert C++ project to support MFC?
Thanks,
Jabir
|
|
|
|
|
Hi,
I am looking for a Visio like control (to use with VC6). It is to draw flowsheets, etc...
At work we have some old Stingray things, but I don't like them. Do you know any control like that?
Or a starting point to build it on?
Thank you,
loic
|
|
|
|
|
I've got a header file and a library from a SDK and a want to programme with those functions from the SDK. Can somebody explaine me how I've must call those functions from the SDK and define the library and the header file?
I've put the library in the "Additional dependencies" setting...
I hope somebody can help me out.
|
|
|
|
|
The header file has to be included in every file where you want to use the functions declared in it. Lib files can be either included via the import command or by use of the project settings as you already did.
|
|
|
|
|
Does anyone know how to create files and edit them in vc++?
I know how to do it in vb, but i'm new to vc++.
Thanks for any help! Nathan
|
|
|
|
|
Have a look at CFile or CStdioFile. They offer you easy-to-use methods for creating files and filling them with content. There should be many tutorials about that on MSDN and here on CP.
|
|
|
|
|
Is someone fit in using the MIL-Library from Matrox.
This framegrabber has some TTL outputs I want to use for my application.
I tried to set the CAMCTRL0 Pin(35) on this framegrabber but it doesn't work.
Perhaps someone knows the error in my program:
I wasn't able to mesure an alternating voltage on the dmm. I had 0V all the time.
MIL_ID MilApplication;
MIL_ID MilSystem;
MIL_ID MilDigitizer;
MIL_ID help;
MappAlloc (M_DEFAULT, &MilApplication);
MsysAlloc (M_SYSTEM_METEOR_II_CL, M_DEFAULT, M_DEFAULT, &MilSystem);
MdigAlloc (MilSystem, M_DEFAULT, "c:/dcf/test.dcf", M_DEFAULT, &MilDigitizer);
MdigControl(MilDigitizer, M_USER_OUT_FORMAT , M_TTL);
printf("Bit set!\n");
while(true)
{
MdigControl(MilDigitizer, M_USER_BIT+2, M_ON);
Sleep(1500);
MdigControl(MilDigitizer, M_USER_BIT+2, M_OFF);
Sleep(1500);
}
|
|
|
|
|
hi,
I'm building a Program that is works in a server/client situation, if a client wants to see how is connected to de server a list of all connections(SOCKET's) is send to the client. As we all know the SOCKET type is just a pointer to a network adress. Now i want to know what type of number this pointer is, how many bits. With this information i know how much bytes i have to reserve in my msg from server to client.
I couln't find it in the msdn libary... I hope you understand me, my english isn't that great.
[]D [] []D []
|
|
|
|
|