Solved

C programming  win32 api RichEdit control problem

Posted on 2003-10-29
14
1,043 Views
Last Modified: 2008-02-26
Hello I am haveing a problem creating a richedit control.I load the riched.dll  in the window main like so......


   if(!LoadLibrary("riched32.dll")){
        MessageBox(hwnd, "Could not load Riched32.dll", "Error", MB_OK | MB_ICONERROR);
     }



then I create my window in the WM_CREATE like so ......


  hEditBox = CreateWindowEx(WS_EX_CLIENTEDGE, "RICHEDIT", "",WS_CHILD | WS_VISIBLE|ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL,
                    0, 0, 100, 100,     hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);

                  if(hEditBox == NULL)
                              MessageBox(hwnd, "Could not create hEditBox.", "Error", MB_OK | MB_ICONERROR);


Everything compiles just fine but when I go and  run it my MessageBox  prompts me it could not create the hEditBox control.I am using windows 98 sec.Can anyone  help me out and maybe tell me what I am doing wrong.If anyone needs any more information please let me know.Also I have tried to load the riched20.dll for 2.0 and use RICHEDIT_CLASS with no luck.

Thank you for your time and help
0
Comment
Question by:bizbiz
14 Comments
 
LVL 45

Expert Comment

by:Kdo
Comment Utility

When the CreateWindow() call fails, check the value of GetLastError().  It should have enough information to isolate the problem.


Kent
0
 

Author Comment

by:bizbiz
Comment Utility

Hello and thank you for your reply, Kent.
The Error code I get back is this


 
The operation completed successfully

This is my Error checking code

      if(hEditBox == NULL)
                    err = GetLastError();
                         FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM,NULL,err,0,(LPTSTR)&result,0,NULL);
                                                                                MessageBox(hwnd, result, "Error", MB_OK | MB_ICONERROR);

What would be causeing this error and stop the edit control from working.

Thank you for any help you can give me on this.


0
 
LVL 6

Expert Comment

by:Ajar
Comment Utility
Hey I think you should not   load  "riched32.dll"   but instead only  "riched32"

0
 
LVL 45

Expert Comment

by:Kdo
Comment Utility

I trust that your code really looks like:

      if(hEditBox == NULL)
      {
              err = GetLastError();
              FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM,NULL,err,0,(LPTSTR)&result,0,NULL);
              MessageBox(hwnd, result, "Error", MB_OK | MB_ICONERROR);
       }

In this case it shouldn't matter, but it may start to give a false error message box once the problem is resolved.


Does the LoadLibrary() call register all of the classes within the library?  "RICHEDIT" is not one of the "standard" classes so it must be registered to Windows with RegisterClass() or RegisterClassEx().

I'm not familiar enough with LoadLibrary() to know if it also does all of the required class registration.

Kent
0
 

Author Comment

by:bizbiz
Comment Utility
Following the instructions here
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/aboutricheditcontrols.asp



it does not say I have to register the class.I tryed to register the class But its like the class is not there.
That is if the class is Called RICHEDIT in the Riched32.dll.I also tryed the riched20.dll with RICHEDIT_ClASS.The RICHEDIT_CLASS is define in my riched.h file.But it stilll does the same.
0
 

Author Comment

by:bizbiz
Comment Utility
I am clueless here.Someone throw me a bone hehehe or something.Thank you for your reply Kent.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:bizbiz
Comment Utility
I would think RICHEDIT_CLASS etc would be the  lpszClassName name not the WNDCLASSEX class its self. So what would I register if I had to register the class????
0
 
LVL 45

Expert Comment

by:Kdo
Comment Utility

The page:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/using_run_time_dynamic_linking.asp

describes one way of dynamic linking.  After the LoadLibrary() call, call GetProcAddress() to see if the API is present.

Kent
0
 

Author Comment

by:bizbiz
Comment Utility
Ok the......

LoadLibrary("Riched32") or  LoadLibrary("riched20")  is  not equal to NULL.But the.....

GetProcAddress() is equal  to NULL.....So this mean I don't have the api huh :-( ????
 
What to do  now.Thank you once again Kent for your reply/help.

0
 

Author Comment

by:bizbiz
Comment Utility
Thank you for your reply as well Ajar  
0
 

Author Comment

by:bizbiz
Comment Utility
Ok I tryed a diffrent way and its stilll doing the same thing i used my dlltool and produced a librich20.a file and I linked it  but it stilll does the same thing and I used RICHEDIT_CLASS . Anyone got any ideas???? What could be going on.Is there anything speacial I have to do with the InitCommonControls(); by chance????.

Thank you for your time.
0
 

Author Comment

by:bizbiz
Comment Utility
No one has answered this question.Can I have the points back???
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
Comment Utility
PAQed, with points refunded (170)

Computer101
E-E Admin
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now