|
You might get that because the DLL you are trying to load is dependent on some other DLLs which it cannot find.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
The dll's which this dll is dependent are available in the appropriate locations. Also tried verifying them in dependencyWalker. There are no dependency erros seen in it. But still the LoadLibaryW call is failing.
|
|
|
|
|
Maybe it's a "bitness" issue, are you sure you are not trying to load -directly or indirectly- a 32 bit DLL into a 64 bit process somewhere or vica versa? Altrough i supose that ahould give a different error, but who knows, maybe when trying to load a DLL which is dependent on another DLL of which it only finds the "wrong" version then it will say "module not found". Speaking of version, could it be some versioning problem? Like the DLL this module is dependent on is some incompatible verison (like, too old)?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
Eh, another thing i just realized, your question is not C/C++ but rather C# related, maybe you should rather ask on the C# forum.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
This is the C/C++/MFC forum. May be you should ask in the C# forum.
Common errors are typos. So check the path again. Just to be sure: The subject of your question contains the path 'C:\abc.dll' which will fail (must be 'C:\\abc.dll').
|
|
|
|
|
Show the actual full code of your failing LoadLibrary() call, including (most importantly) the string parameter.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
V K 2 wrote: "C:\abc.dll"
You know, backslashes should be escaped in quoted strings.
[update]
I see Jochen already suggested it.
[/update]
Veni, vidi, vici.
|
|
|
|
|
Has anyone attempted to use this class and call GetWindowTextLength() to see if the control has any user-typed text in it? I often use this approach to know when to enable/disable the OK button on a dialog. If the control just has the mask in it (i.e., no user-typed text), I consider the control to be empty and thus need to disable the OK button. The problem is that GetWindowTextLength() always returns the length of the mask. I can call GetWindowText() in the EN_CHANGE handler and compare the text to the mask but it always seems to be off by one. In other words, if the mask is "___" and I type a number in that control, GetWindowText() will return "___" instead of "2__".
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
|
David,
When MFC controls exhibit strange behavior I always take a look at the source code for the control located in the \VC\atlmfc\src\mfc installation path.
If you look at the Microsoft implementation within afxmaskededit.cpp you will find that the CMFCMaskedEdit class handles the WM_GETTEXTLENGTH,WM_GETTEXT and WM_SETTEXT messages overriding the default CWnd behavior. The CMFCMaskedEdit class is actually returning the length of an internal CString buffer in response to the WM_GETTEXTLENGTH message.
Therefore the Microsoft documentation that states: 'EN_CHANGE notification code is sent when the user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification code, this notification code is sent after the system updates the screen.' would not apply to this particular window class.
Unfortunately you will have to implement something outside the box here. A couple of ideas:
Option [1] Highlight all of the code in afxmaskededit.cpp and afxmaskededit.h and copy/paste into DavidCrowsMaskedEdit new class and change/improve the behavior.
Option [2] You could override PreTranslateMessage and check for the WM_KEYUP message belonging to the CMFCMaskedEdit control. Once the control has recieved this message... the CMFCMaskedEdit should have updated its internal buffer because it does its filtering in response to the WM_CHAR message. Note that this method will not handle copy/cut/paste from the clipboard so your mileage may vary.
BOOL YourMaskDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYUP == pMsg->message)
{
if(::GetDlgCtrlID(pMsg->hwnd) == m_YourMaskEdit.GetDlgCtrlID())
{
int iLength = m_YourMaskEdit.GetWindowTextLength();
if(iLength)
{
CString str;
m_YourMaskEdit.EnableGetMaskedCharsOnly(TRUE);
m_YourMaskEdit.GetWindowText(str);
str.Remove(_T('_'));
BOOL UserAddedText = str.GetLength();
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Option [3] You could actually get the window text or text length in your WM_CTLCOLOR handler. Something like:
HBRUSH YourMaskDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID() == m_YourMaskEdit.GetDlgCtrlID())
{
}
return hbr;
}
I know it seems like a complete hack... by looking at window text in the WM_CTLCOLOR handler but that is actually how Dr. Joseph Newcomer did it in his old validating CEdit class.
That is really all I can think of for solving your problem. To be honest I generally avoid many of the MFC classes... I usually reinvent the wheel... because sometimes my wheels are more round. And if my new wheel ends up square... well at least I learned something in the process.
Best Wishes,
-David Delaune
|
|
|
|
|
I made a Windows Listview control that show the contents of a folder, so the user can select the file to open.
My Listview has 4 columns, the first is filename, which can be a folder or app. In front of the name, for cosmetics, I want to show the icon. So if it's a folder, the folder icon, and the name of the folder appears.
Question:
Am I even on the right track here, using SHGetFileInfo to get the folder icon from Shell32.dll, and how to load the result in an ImageList, so I can program the 1st column with the icon in the image list. I could actually use a little help here on writing the code.
hr = SHGetFileInfo( L"Shell32.dll", 0, &siFolderIcon_Small, sizeof( siFolderIcon_Small ), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
hr = SHGetFileInfo( L"Shell32.dll", 0, &siFolderIcon_Large, sizeof( siFolderIcon_Large ), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
HIMAGELIST hil_Folders;
HBITMAP hbm_Folders;
hil_Folders = ImageList_Create( 16, 16, ILC_COLOR, 2, 0 );
hbm_Folders = ( HBITMAP )LoadImage( ( HINSTANCE )lParam, siFolderIcon_Small.szDisplayName , IMAGE_BITMAP, 0, 0, 0 );
ImageList_Add( hil_Folders, hbm_Folders, NULL );
I'm not sure here, if the first code block should load the icon and text in one shot, or as the example shows, load the text, and then go back and load the icon in separate calls. Maybe load the icon in the first call, and then load the text in the second.
memset( &lv_ProjectOpen_Item_Record, dwIndex, sizeof( lv_ProjectOpen_Item_Record ) );
lv_ProjectOpen_Item_Record.iItem = dwIndex;
lv_ProjectOpen_Item_Record.iSubItem = 0;
lv_ProjectOpen_Item_Record.mask = LVIF_TEXT;
lv_ProjectOpen_Item_Record.cchTextMax = 254;
lv_ProjectOpen_Item_Record.pszText = szFileName;
ListView_InsertItem( lv_ProjectOpen_FileSelect, &lv_ProjectOpen_Item_Record );
lv_ProjectOpen_Item_Record.mask = LVIF_IMAGE;
lv_ProjectOpen_Item_Record.iImage = 0;
ListView_SetItem( lv_ProjectOpen_FileSelect, &lv_ProjectOpen_Item_Record);
lv_ProjectOpen_Item_Record.iItem = dwIndex;
lv_ProjectOpen_Item_Record.iSubItem = 1;
lv_ProjectOpen_Item_Record.mask = LVIF_TEXT;
lv_ProjectOpen_Item_Record.cchTextMax = 24;
lv_ProjectOpen_Item_Record.pszText = szDateModified;
ListView_SetItem( lv_ProjectOpen_FileSelect, (const LV_ITEM *)&lv_ProjectOpen_Item_Record);
|
|
|
|
|
I'm not so sure I haven't misinterpreted your question.
However, do you have a specific requirement to create your own dialog to allow for file selection? I ask, because the first thing I thought when I saw your post was 'what about the GetOpenFileName[^] common dialog?'
|
|
|
|
|
I didn't see it in the toolbox.
I just assumed you had to write everything from scratch, oh well.
I'll check the Microsoft Social Forum tonight
|
|
|
|
|
Me too. (implemented drag-n-drop file-opening once since it seemed easier than writing a file selection dialog)
It's quite easy to use though - much easier than trying to implement your own.
Unfortunately, the 'equivalent' function for selecting folders doesn't give such an intuitive, easy-to-use dialog. I seem to remember some kind of trick involving the lpfnHook and a filter that will exclude all files that aren't directories.
|
|
|
|
|
It sounds like it's easier for me to just figure out the icon detail, and make the click events and functions. LOL!
I'm not that far away from completion, and besides, I can use the lesson for other listbox I have in the program. The multi-column thing is quite cool however, and I would like to get to know it better.
Thanks for the post, at least one person has interest in it!
Appreciate the help!
|
|
|
|
|
Worked on it for a couple of hours today. Documentation at MSDN is pretty vague, and got just 1 response off some post I made for help. Looks like SHGetFileInfo is very flexible in it's use, and can be used a dozen different ways.
I didn't see a pre-fabricated control or class in the toolbox, so I made this from scratch the hard way. So far so good.
If I'm completely off base here, just let me know. I might ditch the SHFILEINFO, I don't think I need it.
SHFILEINFOW siFI_Small = {0};
HIMAGELIST hSImageList = {0};
hSImageList = (HIMAGELIST)SHGetFileInfo( L"Doesn't matter", FILE_ATTRIBUTE_DIRECTORY, &siFI_Small, sizeof( siFI_Small ), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES );
DeleteObject( siFI_Small.hIcon );
SHFILEINFOW siFI_Large = {0};
HIMAGELIST hLImageList = {0};
hLImageList = (HIMAGELIST)SHGetFileInfo( L"Doesn't matter", FILE_ATTRIBUTE_DIRECTORY, &siFI_Large, sizeof( siFI_Large ), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES );
DeleteObject( siFI_Large.hIcon );
It looks like any combination works when adding the folder icon, which is index 1 in the imagelist.
lv_ProjectOpen_Item_Record.iItem = dwIndex;
lv_ProjectOpen_Item_Record.iSubItem = 0;
lv_ProjectOpen_Item_Record.mask = LVIF_IMAGE;
lv_ProjectOpen_Item_Record.iImage = 1;
lv_ProjectOpen_Item_Record.cchTextMax = 254;
ListView_InsertItem( lv_ProjectOpen_FileSelect, &lv_ProjectOpen_Item_Record );
lv_ProjectOpen_Item_Record.mask = LVIF_TEXT;
lv_ProjectOpen_Item_Record.pszText = szFileName;
ListView_SetItem( lv_ProjectOpen_FileSelect, &lv_ProjectOpen_Item_Record);
|
|
|
|
|
hi
any body help me or guide me from where i start to read flash drive type reader.
thanks.
|
|
|
|
|
Try using Google[^] first.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
Is the USB device mounted, and does it have a drive letter assigned to it?
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
please, some one give me documentation about c++ gui.
thinks
|
|
|
|
|
|
documentation about graphical user interface(winForms). ( my project in visual studio 2010 os:windows 7)
|
|
|
|
|
What documentation are you talking about? If you want to write Windows programs in C++ then there are plenty of articles here on CodeProject and elsewhere that can help you. If you are looking for something else then please be more explicit about your problem.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
You already have Google, MSDN, CodeProject, etc...
Veni, vidi, vici.
|
|
|
|
|
i have created an extension dll. where i am loading a dialog from the client mfc application. My dialog has all menubar, toolbar, view. the dll dialog is being loaded but the toolbar is not coming. toolbar is there of the client mfc applications toolbar. My dll dialog toolbar is not being shown. any suggestions what could be the problem??? Thanks in advance
[code]
BOOL CDlgsViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pNewView = new CMyView();
ShowWindow(SW_SHOWMAXIMIZED);
CRect clientRect;
GetClientRect(&clientRect);
clientRect.DeflateRect(10, 30);
// Creation of the view window
if(! m_pNewView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD, clientRect,
this, WM_USER))
{
MessageBox(L"Failed to create view");
}
menu.LoadMenu(IDR_MAINFRAME1);
SetMenu(&menu);
if(!m_FirstToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_FirstToolBar.LoadToolBar(IDR_TOOLBAR1))
{
EndDialog(IDCANCEL);
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);
m_wndStatusBar.Create(this); //We create the status bar
m_wndStatusBar.SetIndicators(indicators,2); //Set the number of panes
CRect rect;
GetClientRect(&rect);
//Size the two panes
m_wndStatusBar.SetPaneInfo(0,ID_INDICATOR_NISH,
SBPS_NORMAL,rect.Width()-100);
m_wndStatusBar.SetPaneInfo(1,ID_INDICATOR_TIME,SBPS_STRETCH ,0);
//This is where we actually draw it on the screen
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,
ID_INDICATOR_TIME);
m_wndStatusBar.SetPaneText(0,L"MainWindow Initialized");
if(!fileName.IsEmpty()) {
m_pNewView->loadProfile(fileName);
m_pNewView->domainSetUpForProfile();
m_pNewView->drawLines();
m_pNewView->drawArcs();
m_pNewView->drawProfile();
m_pNewView->isModel=true;
m_pNewView->OnGeneratesurface();
m_pNewView->OnShade();
m_pNewView->OnIsosouthwest();
}
return TRUE; // return TRUE unless you set the focus to a control
}
[\code]
This is the OnInitDialog of my dll dialog where i am loading everything menubar, toolbar calliing some functions etc.
Please help
|
|
|
|
|