|
I find error because I Create AboutDailog and i show this dailog;
but AboutDailog code same of system create CAboutDlg :
----------AboutDailog.h---------------------
class AboutDailog : public CDialog
{
DECLARE_DYNAMIC(AboutDailog)
public:
AboutDailog();
virtual ~AboutDailog();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnFileAbout();
};
----------AboutDailog.cpp---------------------
// AboutDailog.cpp : 实现文件
//
#include "stdafx.h"
#include "MyControlTest.h"
#include "AboutDailog.h"
// AboutDailog
IMPLEMENT_DYNAMIC(AboutDailog, CWnd)
AboutDailog::AboutDailog()
{
}
AboutDailog::~AboutDailog()
{
}
BEGIN_MESSAGE_MAP(AboutDailog, CWnd)
ON_COMMAND(ID_FILE_ABOUT, &AboutDailog::OnFileAbout)
END_MESSAGE_MAP()
// AboutDailog 消息处理程序
void AboutDailog::OnFileAbout()
{
// TODO: 在此添加命令处理程序代码
AboutDailog aboutDlg;
aboutDlg.DoModal();
}
----------CAboutDlg.h---------------------
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
----------CAboutDlg.cpp---------------------
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// 用于运行对话框的应用程序命令
void CMyControlTestApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
/*AboutDailog aboutDlg;
aboutDlg.DoModal();*/
}
|
|
|
|
|
Patrick Tang wrote: but AboutDailog code same of system create CAboutDlg
One constructor does not use any resource template ID... Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Patrick Tang wrote: ...but tell me is error.
Are you keeping this error a secret or can you be bothered to share it with us?"One man's wage rise is another man's price increase." - Harold Wilson
"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
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
I can't believe I'm struggling as much as I am over this, but basically, I have
signed char cCoffee[16];
and I need to turn it into CString.
I've tried all the obvious:
CString strString 1 = cCoffee;
CString strString2(cCoffee);
CString strString3;
CopyMemory(strString3.GetBuffer(), cCoffee, sizeof(unsigned char)*16);
strString3.ReleaseBuffer();
I still can't get it to work...
I don't have a say in how cCoffee is declared, so please don't suggest things like "use _T("string")".
I'm using Unicode.
Any help greatly appreciated.
|
|
|
|
|
PaulowniaK wrote: I still can't get it to work...
Please describe it concretely Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Apologies.
My VS2005 doesn't speak English, so I'll just list the compiler error for each attempt I made:
CString strString1 = cCoffee;
results in error C2440
CString strString2(cCoffee);
results in error C2664
CString strString3;
CopyMemory(strString3.GetBuffer(), cCoffee, sizeof(signed char)*16);
strString3.ReleaseBuffer();
compiles OK but has a runtime error
"Expression: nLength <= GetData()->nAllocLength" etc
|
|
|
|
|
What error does come if you write:
CString cszTest((char*) cCoffee);
please ? Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Ooops, I seemed to have missed this message.
No error, actually!
I hope it is fully solved, but I need to check something else...
|
|
|
|
|
Yes, you can use the CString to convert any char* directly Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Cool, but I found the reverse problem as well.
I'm loading up cCoffee from a CString as well and messed that up so only the first character was copied:
CopyMemory(cCoffee, strOriginal.GetBuffer(), strOriginal.GetLength());
I understand this is wrong, but I don't know how to fix it.
Please help!
(Basically, I'm going from CString -> signed char* -> CString. Probably not a nice thing to do, but I'm stuck with it for the time being...)
|
|
|
|
|
You could use the macro T2A to "go back" Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
I get error C2065 if I do
CString strOriginal;
cCoffee = T2A(strOriginal);
|
|
|
|
|
#include <AtlConv.h>
{
...
USES_CONVERSION;
char* pchTempResult = T2A(cszYourString);
strncpy(cCoffee, pchTempResult, _countof(cCoffee));
...
} Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Thanks.
Nearly, but not quite, I still have error C2664.
The problem seems to be strncpy .
It complains about not being able to turn signed char* into char* .
But I used CopyMemory instead and it worked!!
Thanks a million!!
|
|
|
|
|
try
CopyMemory(strString3.GetBuffer(16/*needed*/+1/*sanitiy*/), cCoffee, sizeof(signed char)*16);Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
The problem is exactly that.
signed char is not UNICODE but CString is.
You can either change cCoffee to signed wchar_t which will make it UNICODE .
Or you can use CStringA which will then not use UNICODE .
Or you can convert cCoffee to a UNICODE string using MultiByteToWideChar .
|
|
|
|
|
#ifdef UNICODE
char* pchTest("test");
CString cszTest(pchTest);
ASSERT(cszTest == _T("test"));
#endif
You will not see any popup window hier Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Thanks.
I have no choice over how cCoffee is declared, and I have to use CString not CStringA, so I tried the MultiByteToWideChar option, but I still get error C2664.
|
|
|
|
|
Please post the relevant code.
|
|
|
|
|
MultiByteToWideChar(CP_UTF8, 0, cCoffee, -1, &strString1, 0);
|
|
|
|
|
strStrings1 has to be of type wchar_t and the last parameter has to be specified.
wchar_t strString1[MAX_PATH];
MultiByteToWideChar(CP_UTF8, 0, cCoffee, -1, strString1, MAX_PATH);
|
|
|
|
|
Ah, I see, thanks for the help.
|
|
|
|
|
|
Thanks.
Iain Clarke, Warrior Programmer wrote: Big hint, which you've already had: later versions of VS default to unicode, so CString uses that.
I just assumed my VS uses Unicode because it speaks Japanese.
Never mind, at least I'll know where to look the next time I get stuck on strings.
|
|
|
|
|
Hi,
I would like to call my home page from VC++ (thru default browser).For example, user clicks on a button, so internet explorer will be open to show some web pages.
Can anybody help me ?
|
|
|
|