|
Yes. Add them into the resource file. I've added an HTML file (contained in the 'res' sub-directory of my project) to my resources using this entry in the resource (.RC) file:
ABOUTDIALOG.HTML HTML "res\\aboutdia.htm"
You could use (for example)
TEST.JPG JPG "res\\test.jpg"
You can then use a code fragment like the following to load a resource into memory:
std::string LoadFileFromResource(HINSTANCE hmodResource, LPCTSTR name, LPCTSTR type)
{
if (!type)
type = ::PathFindExtension(name) + 1;
HRSRC rsrcFile = ::FindResource(hmodResource, name, type);
if (!rsrcFile) return std::string();
HGLOBAL gblFile = ::LoadResource(hmodResource, rsrcFile);
if (!gblFile) return std::string();
DWORD sizeFile = ::SizeofResource(hmodResource, rsrcFile);
if (!sizeFile) return std::string();
LPVOID filePointer = ::LockResource(gblFile);
if (filePointer)
{
std::string contents((char*)filePointer, sizeFile);
::FreeResource(gblFile);
return contents;
}
return std::string();
}
[edit]You'd call that function a bit like this:
std::string loadedJpeg = LoadFileFromResource(resourceDllHandle, _T("TEST.JPG"), _T("JPG"));
std::string might not be the best result type for you, as you're loading a binary file - I've only loaded text files with this...[/edit]
HTH!
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
modified on Thursday, April 2, 2009 5:25 AM
|
|
|
|
|
can i load from external dll?
|
|
|
|
|
Yes, so long as you load the DLL with a LoadLibrary call.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
how can i set images in external dll and load into application?
|
|
|
|
|
When you build the DLL, embed the jpeg files in the DLL's resources, as I described before.
In your executable, call LoadLibrary for the external DLL containing the image files. That'll return the HMODULE you need to pass into the LoadFileFromResource function I gave you the source for.
Then you can load the image files from the DLL as desired.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I created MFC dll with JPG images as you explained, but when try to load into exe,
FindResource() returning ERROR_RESOURCE_DATA_NOT_FOUND.
Can you suggest me what to do (I have an application inc which dialogs and contros skinned with jpg images, so am carrying jpg images with my application, for that want to create dll and load images whenever required), what type of Dll(Win32 or MFC) need to build? IF MFC why it is failing to find resource, if win32 how images can add into dll.
|
|
|
|
|
Win32 DLL is fine - just create a Win32 DLL project and add the resources. You might have to export a routine for it to make the DLL.
For the MFC one - have you got the correct HMODULE for the DLL (use LoadLibrary to get the correct one)
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Ya am loading dll using Loadlibrary, but FindResource is failing. How can we know dll contains images or not?
You can see this link Load JPEG images from DLL with LoadResource in Managed C++[^] , here also loading image from dll, the same way i tried but it is failed. any reasons?
modified on Saturday, April 4, 2009 9:06 AM
|
|
|
|
|
kiranin wrote: Ya am loading dll using Loadlibrary, but FindResource is failing. How can we know dll contains images or not?
Open it in Visual Studio - that should show you if it has resources, including images.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi there.
I am setting text for a control using below code...
char buffer[MAX_PATH];
char *message = "Hello";
sprintf(buffer, "%s", message);
....
....
HWND pWnd7 = ::FindWindowEx(pWnd6, NULL, L"TComboBox", NULL);
::SendMessage(pWnd7, WM_SETTEXT, 0, (LPARAM)buffer);
Its setting some text but seems to be some garbage. i tnow its not garbase, but actually we are not able to properly convert buffer into LPARAM type i.e., (LPARAM)buffer).
Please help me on this.
Thanks
PanB
|
|
|
|
|
PankajB wrote: char buffer[MAX_PATH];
char *message = "Hello";
sprintf(buffer, "%s", message);
....
....
HWND pWnd7 = ::FindWindowEx(pWnd6, NULL, L"TComboBox", NULL);
::SendMessage(pWnd7, WM_SETTEXT, 0, (LPARAM)buffer);
What about
TCHAR buffer[] = _T("Hello");
HWND hWnd7 = ::FindWindowEx(hWnd6, NULL, _T("TComboBox"), NULL);
if ( hWnd7 ) ::SendMessage(hWnd7, WM_SETTEXT, 0 , (LPARAM) buffer);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
try
.............
SendMessage(hWnd7, WM_SETTEXT, (WPARAM)strlen(buffer) , (LPARAM) buffer);
...........
|
|
|
|
|
in my project i designed a doalog box. i build my project in debug mode.while executing if i press "ok" button or "cancel" button it is becoming inactive but in relese mode this problem is not occurring.what is the reason for it?if you know please let me know
Regards
kiran
kir_MFC
|
|
|
|
|
Hello to all,
In my project I am using a device which when I connect to the computer to the USB port, computer creates a virtual port as "USB Serial Port (COM X)" where X stands for port number which will be any.Then I open that port and reads data, as per normal communication port opening and reading/writting operations. Now what I want to do is, is there any mechanism of finding your computer's communication port numbers so that I need not to look what the port number is while opening that port. Means when I will start my application I will directly get that COM port number where my device is connected and then there will be no need of selecting the correct COM port number in my application to open it.
So please does anyone know that, is there any such kind of mechanism which will directly give me the COM port number where my device is connected or any mechanism which will directly give you your computer's communication port numbers? Please its really very very urgent so help me.
Thanks and Regards,
Anay
|
|
|
|
|
You can enumerate serial ports.
http://www.codeproject.com/KB/system/serial_portsenum_fifo.aspx
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
Have a look at here: [^]. The solution shown resulted from the same problem.
|
|
|
|
|
|
Does this [^] help?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
Purish Dwivedi wrote: Actually this method can be used in MFC application , but I wanna detect the available languages through installlshield during installation.
Hi Purish Dwivedi,
1.) EnumUILanguages has nothing to do with the MFC, this function is exported from Kernel32.dll and can be called from any language capable of calling Win32 Dynamic Link Library functions. The exported function is available on Win2k and above.
2.) If your question is InstallShield specific perhaps you should ask in the InstallShield Forum[^].
Best Wishes,
-David Delaune
|
|
|
|
|
Dear fiends
I want to develop a new component for an application to handle all Errors(e.g Bad memory pointer, Bad file directory etc.) in the application. There is a problems.
What technic should I use to make it easy to report error?For instance ,It is not necessery to report a error by using if-else clause or return value.C++ exception or SEH? How to implement?
I am looking for solution to implement this.
Any reply regard to this topic will be deeply appreciated.
Best regards
Lance
|
|
|
|
|
I use EurekaLog[^] in our application. It works really well and error reporting is very nice.
xiaolin.lan wrote: .C++ exception or SEH? How to implement?
I am looking for solution to implement this.
Are you asking how to use C++ exceptions?
|
|
|
|
|
Thanks for your reply firstly.
But our application is developed in VC++ 6.0 which EurekaLog is inapplicable for!
|
|
|
|
|
I'm trying to force a message box to keep keyboard and mouse focus at all times that way the user cannot do anything else until they finish with my program. The console window is hidden and only message boxes are the only thing visible. I'm using Dev-Cpp 4.9.9.2 and Windows XP and sometimes Vista.
|
|
|
|
|
Hint: look into modal dialog boxes.
|
|
|
|