|
I’ll post it about 7 am thank you
|
|
|
|
|
i'LL POST THREE pieces 1) the oninitdialog of the parent Cdialog 2) the Steamin 3) resource file Tell me if you want to see more thanks you
BOOL CStorge::OnInitDialog()
{
int numolines;
storagepointer = new CRichEditCtrl;
CDialog::OnInitDialog();
CHARFORMAT cf2 = { 0 };
STREAMIN((WPARAM)storage_ptr, (LPARAM)storagelen);
storagepointer->SetSel(0, -1);
cf2.cbSize = sizeof(cf2);
cf2.dwMask = CFM_FACE | CFM_PROTECTED;
cf2.dwEffects = CFE_PROTECTED;
memcpy(&cf2.szFaceName[0], "Courier New",12);
storagepointer->SetSelectionCharFormat(cf2);
storagepointer->SetSel(0, 0);
storagepointer->ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
return TRUE;
}
call to setup STREAMIN
LRESULT CStorge::STREAMIN(WPARAM mywparam, LPARAM mylparam)
{
char *sendptr;
sendptr = (char*)mywparam + 4;
streaminparm parms;
parms.storpointer = (char *)sendptr;
parms.storlen = (int)mylparam;
EDITSTREAM STORAGESTREAM;
STORAGESTREAM.pfnCallback = storagestreamin;
STORAGESTREAM.dwCookie = mywparam;
STORAGESTREAM.dwCookie = (DWORD_PTR) &parms;
long numstream = storagepointer->StreamIn(SF_TEXT,STORAGESTREAM);
return TRUE;
}
the Streamin function
DWORD storagestreamin(DWORD_PTR dwCookie,
LPBYTE pbBuff,
LONG cb,
LONG* pcb)
{
static BOOL flag = 0;
if (flag == 0)
flag = 1;
else
{
*pcb = 0;
flag = 0;
return 0;
}
int i;
streaminparm* inparms = (streaminparm *)dwCookie;
void* holdptr = inparms->storpointer;
char* holdptr1 = (char*)pbBuff;
int totalen = inparms->storlen;
memcpy((char *)pbBuff, "This is a test\r\n",16);
*pcb = 16;
return 0;
for (i = 0; i < totalen; i += storageline)
{
memcpy(holdptr1, holdptr, storageline);
holdptr = (char*)holdptr + storageline;
holdptr1 = (char*)holdptr1 + storageline;
*holdptr1 = '\r';
holdptr1 = (char*)holdptr1 + 1;
*holdptr1 = '\n';
*pcb += 74;
}
return 0;
}
the Dataexchange member to create the rich edit HWND
void CStorge::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ASID, asidstr);
DDX_Text(pDX, IDC_SP, spstr);
DDX_Text(pDX, IDC_TCB, tcbstr);
DDX_Text(pDX, IDC_FP, fpstr);
DDX_Control(pDX, IDC_EDIT2, (CWnd&) *storagepointer);
}
The resource indentfier of the cdialog with richedit
IDD_DIALOG10 DIALOGEX 0, 0, 769, 429
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Storage View / Change"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CTEXT "",IDC_TCB,45,30,47,8
CTEXT "OwnIng TCB",IDC_STATIC,41,13,58,8
CTEXT "",IDC_SP,164,28,43,8
CTEXT "Storage SubPool",IDC_STATIC,162,12,55,8
CTEXT "",IDC_ASID,265,26,32,8
CTEXT "Asid",IDC_STATIC,269,9,31,8
CTEXT "",IDC_FP,399,31,19,8
CTEXT "Fetch Protect Key",IDC_STATIC,392,15,63,8
CONTROL "",IDC_CUSTOM5,"PieCOntrol",WS_TABSTOP,617,99,109,109
COMBOBOX IDC_COMBO1,491,236,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | WS_BORDER | WS_TABSTOP | WS_VISIBLE, 45,106,494,314 THE RICH EDIT
EDITTEXT IDC_EDIT1,45,110,494,314,ES_AUTOHSCROLL
COMBOBOX IDC_COMBO2,637,244,67,16,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST2,641,310,68,11,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END
|
|
|
|
|
ForNow wrote: CDialog::OnInitDialog();
CHARFORMAT cf2 = { 0 };
STREAMIN((WPARAM)<b>storage_ptr</b>, (LPARAM)storagelen);</blockquote>
What is storage_ptr? Its type and value?
|
|
|
|
|
you think thats the problem I should make it a CRicheditrl *
BTW I did Call AfxRichEditInit and I did observer that storage__ptr had a Hwnd after the DoDataExange
void* storage_ptr;
|
|
|
|
|
ForNow wrote: C++Copy Code
void* storage_ptr;
You mean you pass an uninitialized pointer into your STREAMIN method?
BTW, did you debug your code (and, particularly, this STREAMIN method)?
|
|
|
|
|
The Ponter I pass to the streamin is 1) the data ptr and 2) the length of it I did debug it and it passed the value back that I wanted in pBuff and *pcb
storage_ptr should be of type CrRicheditCtrl * instead of void * but it does a value and After the Call Cdialog::OnInitDialog it Called my DoDataExchage and had a valid HWND
In in fact if you look at that small test when I pass "this is a test\r\n" back to pBuff and *pcb = 16 that doesn't display
When I type any chanarcter in the rich edit for example a D this is a test follow it for example looks like this DThis is a test
thanks
|
|
|
|
|
I could not test your "code" because there is a lot of problems with:
undeclared identifier
undeclared identifier
cannot convert from 'DWORD (__cdecl *)(DWORD_PTR,LPBYTE,LONG,LONG *)' to 'EDITSTREAMCALLBACK'
...
and so on.
Could you post a code (sample project) that would reproduce your problem?
|
|
|
|
|
is there anywhere I could zip it if not the total project is 6 .cpp files with 6 headers and resource file
thanks you are really nice
|
|
|
|
|
Sorry! I don't know.
But if you won't find a way to do that then you could repost your question in Visual C++ Programming
Or just email it to me: <my surname=""> at <onlinehome.de>
|
|
|
|
|
Ill take the latter thanks but this mini project is a tcp/ip application that gets data into the RichEdit from a z z/os machine
let me see if I can somehow segregate it The rich edit portion that is causing the problems and then get a clean build and i'll send it over thanks you are very nice
|
|
|
|
|
You have to simplify your project code until it will reproduce the problem. Just make a very simple project with your RichEdit without any TCP/IP and other IPCs.
Test it. If you won't find the reason of the trouble while debugging this test project then post it to me or/and to the community.
|
|
|
|
|
|
Victor
commented out IDC_EDIT1 and the stream out worked
you are very nice guy for your offer
IDD_DIALOG10 DIALOGEX 0, 0, 769, 429
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Storage View / Change"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CTEXT "",IDC_TCB,45,30,47,8
CTEXT "OwnIng TCB",IDC_STATIC,41,13,58,8
CTEXT "",IDC_SP,164,28,43,8
CTEXT "Storage SubPool",IDC_STATIC,162,12,55,8
CTEXT "",IDC_ASID,265,26,32,8
CTEXT "Asid",IDC_STATIC,269,9,31,8
CTEXT "",IDC_FP,399,31,19,8
CTEXT "Fetch Protect Key",IDC_STATIC,392,15,63,8
CONTROL "",IDC_CUSTOM5,"PieCOntrol",WS_TABSTOP,617,99,109,109
COMBOBOX IDC_COMBO1,491,236,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | WS_BORDER | WS_TABSTOP,45,106,494,314
COMBOBOX IDC_COMBO2,637,244,67,16,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST2,641,310,68,11,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END
|
|
|
|
|
Does it mean that your text was under the IDC_EDIT1 control? Or what???
|
|
|
|
|
No just commented out that control maybe it overlaid IDC_EDIT
Thank you
|
|
|
|
|
ForNow wrote: maybe it overlaid IDC_EDIT
Yes, it is what I meant in my previous post.
|
|
|
|
|
For the class parameter the documentation says a redefined name (not sure what that means) the reason I am asking I am using a control for which I have a specific WNDCLASS which I registered however the CDialog::Create fails with that control statement in the resource definition
Thanks
|
|
|
|
|
We need to see the code and a bit more detail. If the control is not known at build time then the resource compiler may well have a problem.
|
|
|
|
|
As Richard said, we need more information:
- what is "the class parameter"?
- what is "the documentation" you are referring to?
- what is "the CDialog::Create"?
- also: in what way does it "fail"? Is there a compiler, linker or run-time error, and what does it say? Or does you program not behave in the expected way - if so, how, and what did you expect?
You are apparently referring to very specific things, but we have no idea what you're seeing or reading. (or whether that is relevant information to start with)
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Here are the resource statements Here is the call The resource in question is IDC_CUSTOM5 Fail means that when I comment out that CONTROL staement tracing my code the create goes to my
OnInitDialog my question is in the class parm of the resource control can it be my own class which I register at run time via RegesterClass
thank you
BOOL ret2 = drivestorage->Create(IDD_DIALOG10, m_pMainWnd);
IDD_DIALOG10 DIALOGEX 0, 0, 769, 429
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Storage View / Change"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CTEXT "",IDC_TCB,45,30,47,8
CTEXT "OwnIng TCB",IDC_STATIC,41,13,58,8
CTEXT "",IDC_SP,164,28,43,8
CTEXT "Storage SubPool",IDC_STATIC,162,12,55,8
CTEXT "",IDC_ASID,265,26,32,8
CTEXT "Asid",IDC_STATIC,269,9,31,8
CTEXT "",IDC_FP,399,31,19,8
CTEXT "Fetch Protect Key",IDC_STATIC,392,15,63,8
CONTROL "",IDC_CUSTOM5,"PieCOntrol",WS_TABSTOP,617,99,109,109
COMBOBOX IDC_COMBO1,491,236,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | WS_BORDER | WS_TABSTOP, 45,106,494,314
EDITTEXT IDC_EDIT1,45,110,494,314,ES_AUTOHSCROLL
COMBOBOX IDC_COMBO2,637,244,67,16,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST2,641,310,68,11,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END
|
|
|
|
|
ForNow wrote: can it be my own class which I register at run time via RegesterClass I am not sure as I have never tried that. The documentation at CONTROL control - Win32 apps | Microsoft Docs[^] states (although it is slightly ambiguous) that it must be one of the predefined classes. If your code is failing when you try it with a locally defined class then you need to use the debugger to find out why.
|
|
|
|
|
I think the documentation means you have to Register the Class before calling CDialog::Create as I remember I forgot to call AfxInitRichEdit before doing a CDialog::Create and it failed I think CDialog::Create Checks Uid template dialog resource and sees if the classes are registered
Thanks you
|
|
|
|
|
I assumed you were doing that anyway, since Windows cannot create an object of a class that it does not know about.
|
|
|
|
|
I've never tried it so I'm not sure exactly how it works but I notice a rather strange capitalization in you class name: "PieCOntrol" . I don't know if Windows is case sensitive or not when looking for class name.
Mircea
|
|
|
|
|
Thanks that’s they way I had it in my wndclass I am displaying a pie chart on the side of a dialog box but need a Cwnd class to hang it off of thats the class I’m using for it used the cpiedemo from this site for learning
|
|
|
|
|