|
If you use CSocketFile and CArchive classes with the CSocket class, you will get exceptions when the connection is broken or when other errors occur. So you can catch the exception before your app crashes. This is the "recommended" way to use CSocket, but nobody listens
|
|
|
|
|
Hi all,
I'm having difficulty making my wizard (based on CPropertySheet and CPropertyPage) look like the examples in Microsoft's guidelines (the Windows User Experience).
According to the book, the wizard graphic at the left should extend to the top and left edges of the wizard and also down to the horizontal line that separates the page from the Back & Next buttons. However, when using MFC's support for wizards via CPropertySheet, there is always a 7DLU border added automatically around my pages, meaning that the graphic ends up 'floating' inside the wizard window, well away from its edges. Does anyone know how I can change the automatic sizing of the wizard and positioning of its pages? I still want to use CPropertySheet, mind.
Cheers,
Mal.
|
|
|
|
|
hi,
where can i find integer identifier for control. for example IDC_RADIO1 has integer value ... ?
|
|
|
|
|
You want to know what it is ? Look in resource.h. If you want to use the value somewhere, include resource.h and use the constant.
Christian
I've learned that you cannot make someone love you. All you can do is stalk them and hope they panic and give in.
The early bird may get the worm, but it's the second mouse that gets the cheese.
|
|
|
|
|
I start a new thread, because my previous thread was lost in the "next" "next" "next" page; nobody answer me and I still have the problem. (See my thread with the same subject of 11 May).
I read the article that Chenzhu suggest me. But my problem isn't about the accelerator keys, I have the problem with each kind of keys. It seems that the control hasn't the focus (or something similar). If you read the article "MFC ActiveX Control in IE Doesn't Detect Keystrokes" (Q168777) they speak about the activation of the control within IE. I tried their suggestions but I didn't solve my problem. If you have time to check just create an MFC ActiveX control with the wizard (confirm all the default properties and set the "available in insert object dialog"), then add the function OnChar (WM_CHAR) and write inside it AfxMessageBox("Key pressed"). Now insert the object in a VB form and it works, but if you insert in a VC MFC dialog based application (with the wizard) it doesn't work.
I'm using Visual Studio 6.0.
Thanks Paolo.
|
|
|
|
|
How bout playing an mp3? U must need a dll I guess, but where do u get it from and how do u make it work? Does anyone know a site that teaches u this? Thanks anyway!
Serban
|
|
|
|
|
There is an article on CodeProject on skinnable apps that includes C code to play an MP3. It's only drawback is that it isn't C++, it uses globals and therefore cannot be used to play more than one at a time ( I want to find code that does so I can use MP3's in my game sound engine ).
There are a few libraries about, but I don't like not having the source code, and I didn't like the licencing that came with the two libraries I found ( one required payment for any commercial product using the library, which is fair enough but there is no way my employer would pay for something like that, the other was free but reserved the right to become retrospectively expensive, which IMHO is too big a risk to play with at all ).
Christian
I've learned that you cannot make someone love you. All you can do is stalk them and hope they panic and give in.
The early bird may get the worm, but it's the second mouse that gets the cheese.
|
|
|
|
|
Can anyone please provide sample code to bring up a property sheet using WTL?
|
|
|
|
|
Hi,
ok how do I access contents of a structure from inside asm code?
For example I have a structure (with which I will make a list)
typedef struct _LIST{
DWORD value;
struct _LIST *next;
}list;
then I have a pointer of this structure
list *my_list;
After having input the data in this list, how can I traverse the list from inside __asm to read the variable "value" for each of the structures?
i.e. How do I read my_list->value and my_list->next from inside __asm block?
Thanks
|
|
|
|
|
Ok. Here's a quick example. You should be able to figure out the rest.
list *my_list;
my_list = new list;
my_list->value = 1234;
my_list->next = new list;
my_list->next->value = 5678;
__asm
{
mov eax, my_list // eax = my_list;
mov ebx, dword ptr [eax] // ebx = my_list->value
mov ecx, dword ptr [eax+4] // ecx = my_list->next
mov edx, dword ptr [ecx] // edx = ecx->value
}
|
|
|
|
|
Hi,
I like to know what is the general way of serializing a class....
I just like be able to save and open bmp files..
thanks
Ehsan
Ehsan Behboudi
|
|
|
|
|
The BMP format has had a gazillion wrapper classes written for saving and loading it, including some here on the CodeProject.
Christian
I've learned that you cannot make someone love you. All you can do is stalk them and hope they panic and give in.
The early bird may get the worm, but it's the second mouse that gets the cheese.
|
|
|
|
|
Hi,
just for the first part of your question. General way serializing a class.
Have a look on CObject. Generaly you have to derive your class from CObject - and overwrite the
serialise method in your own class.
(DO not forget the macros implement_dyncreate, declare_dyncreate in your class .h/.cpp file)
Have also a look into the document class of your app . There you will find also a serialize method.
When you have a member in your document from your own class, you simply call :
...
m_abc.serialise;
...
in the document serialize class to load or store your class in a file (as binary file).
|
|
|
|
|
If I set window extensions in a CStatic control why allow draw outside of this window extensions. What's the way to fix a limit of draw in a window?
Thanx
Carles
|
|
|
|
|
I have a droplist combobox in a modal dlg called from mainfrm in an SDI.
The combobox must obtain its initial selection ( a CString ) from the selected text in a listcontrol in a dlgbar, also in mainfrm.
How do I accomplish this?
|
|
|
|
|
You should be able to get a pointer to the ComboBox (use .GetDlgItem(ID_OF_COMBO)).
Then with that pointer you should be able to access the members and functions of the
ComboBox (comboBox->...).
Here's an example:
CDialog dlgModal; //initialize the dialog you are about to show.
CComboBox* pCBox = dlgModal.GetDlgItem(ID_OF_COMBO); //get pointer to the ComboBox.
int nDx = pCBox->FindString(-1, "string to find"); //get index of the item you want selected
//the -1 tells it to search from the beginning
...and whatever else you need to do.
...
dlgModal.DoModal(); //display the dialog
I've not done anything quite like what you are attempting, but you should be able to
get a pointer to any control on the form and use that pointer to access its members and functions.
I hope that helps. David.
|
|
|
|
|
Hello, the codegurus around the world.;)
The easiest way to satisfy your requirement is to put public member value like
m_sCurSelectedString in CMyMainFrame.
CMyMainFrame is the parent window of the dialog, dialog bar with ListBox.
I guess that ListBox is the same child level of the dialog bar since ListBox is declared
at CMyMainFrame class?
m_sCurSelectedString is always updated if the user updates the selection of ListBox.
So, when the dialog is opened, m_sCurSelectedString compares the string in ComboBox
in OnInitDialog().
So, how do we access m_sCurSelectedString from Dialog Box?
1) Pass the parent's CWnd of dialog constructor arguement. or
2) Use CWnd::GetParent() or
3) Use AfxGetMainWnd() and cast the pointer of CMyMainFrame.
And, how do we update m_sCurSelectedString of ListBox.
I think that we can use MessageMap of ListBox in CMyMainFrame.
The other way is that we can pass CWnd of ListBox on Dialog Bar
to the consturctor arguemnt of CMyDialog.
At this case, we can direclty access the currnet selected item of ListBox.:cool:
I think that there are several other ways to do this.
Have a nice day!
-Masaaki Onishi-
|
|
|
|
|
In the app class header file, after the app class definition, add the folowing line:
extern CMyApp theApp;
Add these declarations to your app class:
private:
CMainFrame* m_pMainFrame;
public:
CMainFrame* GetMainFramePtr() { return m_pMainFrame);
In the OnInitInstance function of your app class, do this AFTER the main window is created:
m_pMainFrame = pMainFrame;
In the CMainFrame class, put a function that accepts a CComboBox* like so:
int CMainFrame::FillComboBox(CComboBox* pCombo)
{
return pCombo->GetCount();
}
From within the OnInitDialog() function in the dialog box class, call your function like so:
theApp.GetMainFrame()->FillComboBox(&m_ctrlComboBox);
I'm assuming that your dialog box class already has #include "MyApp.h" in it.
|
|
|
|
|
hi there,
following problem:
char g_szOutputFile[_MAX_PATH];
CString pathname;
now i want to copy pathname into g_szOutputFile and i call
strcpy(g_szOutputFile,pathname);
but this doesn't look like it is working, are there any other functions i can call to convert a CString into a char?
thank's in advance,
patrick
|
|
|
|
|
Strange, it's alwayse working perfectly (and doing so now!)
But try to use LPTSTR GetBuffer( int nMinBufLength );
char *c;
CString S;
c = S.Getbuffer(10)
|
|
|
|
|
I'm pretty new to C++, but it seems to me that you can just cast
the CString. I believe you need an LPTCSTR type for the strcpy function,
so I think you can do a simple cast from CString to the LPTCSTR type:
...(LPTCSTR)pathname...
You may need to cast it again such as:
...(LPTSTR)(LPTCSTR)pathname...
David.
|
|
|
|
|
You can try it as such:
char szFileName[MAX_LENGTH];
CString pathname = "c:\temp";
strcpy(szFileName, (const char*)pathname);
|
|
|
|
|
thank's a lot guys, you helped me a lot
patrick
|
|
|
|
|
I Think strncpy should be used for "safer" strcpy
#define STRCPY(d,s)
strncpy( (d), (s), sizeof( (s) ) - 1 );\
(d)[ sizeof((d)) - 1 ] = NULL;\
STRCPY( g_szOutputFile, pathname );
|
|
|
|
|
you can use one of these:
strcpy(g_szOutputFile, (const char*)pathname);
strcpy(g_szOutputFile, (LPCTSTR)pathname);
strcpy(g_szOutputFile, (LPSTR)pathname);
strcpy(g_szOutputFile, pathname.GetBuffer(pathname..GetLength())); pathname.ReleaseBuffer();
|
|
|
|