17. juni 2002 - 16:28
Der er
9 kommentarer og 1 løsning
sæt arbejdsbibliiotek?
Hvordan kan man sætte arbejdsbiblioteket (Visual C++) så fildialoger der åbnes efterfølgende benytter det ønskede bibliotekt og ikke windows standard
Annonceindlæg fra Jyske Bank
Jeg kender umiddelbart kun det gamle dos-kald _chdir(). Dette sætter current directory, og burde så også virke ved efterflg. kald til fildialoger: Change the current working directory. int _chdir( const char *dirname );
Return Value Each of these functions returns a value of 0 if successful. A return value of –1 indicates that the specified path could not be found, in which case errno is set to ENOENT. Parameter dirname Path of new working directory
(Bruges tit til at tjekke om et bibliotek eksisterer: Example /* CHGDIR.C: This program uses the _chdir function to verify * that a given directory exists. */ #include <direct.h> #include <stdio.h> #include <stdlib.h> void main( int argc, char *argv[] ) { if( _chdir( argv[1] ) ) printf( "Unable to locate the directory: %s\n", argv[1] ); else system( "dir *.wri"); }
Det virker ikke, selvom jeg sætter biblioteket til "C:\\" eller "C:\\temp" starter den alligevel i My Music biblioteket og jeg har ikkekunnet få den overbevist om det modsatte... Jeg bruger _chdir før kaldet af en "folder browser"...
Ok - det var da værd at prøve.... :-(
Hvis du bruger disse funktioner, kan du sætte den path de skal starte med at kigge i: BOOL OpenFileDialog(HWND hwnd, char* szFileName, char* szPath, char* szFilter) { if (szFileName) szFileName[0] = 0; if (szPath) szPath[0] = 0; OPENFILENAME ofn; ZeroMemory((void*)&ofn, sizeof(ofn)); ofn.lStructSize = sizeof (OPENFILENAME); ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.hwndOwner = hwnd; ofn.lpstrFilter = szFilter; ofn.lpstrFile = szPath; ofn.lpstrFileTitle = szFileName; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; return GetOpenFileName (&ofn); } BOOL SaveFileDialog(HWND hwnd, char* szFileName, char* szPath, char* szFilter) { if (szFileName) szFileName[0] = 0; if (szPath) szPath[0] = 0; OPENFILENAME ofn; ZeroMemory((void*)&ofn, sizeof(ofn)); ofn.lStructSize = sizeof (OPENFILENAME); ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.hwndOwner = hwnd; ofn.lpstrFilter = szFilter; ofn.lpstrFile = szPath; ofn.lpstrFileTitle = szFileName; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; return GetSaveFileName (&ofn); }
SORRY - Glem det sidste indlæg. Det virker selvfølgelig ikke....
hmmm, måske hvis jeg poster koden til folder browseren?
#include "stdafx.h" #include "folder_dialog.h" #include <DLGS.H> #include <WINUSER.H> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFolderDialog IMPLEMENT_DYNAMIC(CFolderDialog, CFileDialog) WNDPROC CFolderDialog::m_wndProc = NULL; // Function name : CFolderDialog::CFolderDialog // Description : Constructor // Return type : // Argument : CString* pPath ; represent string where selected folder wil be saved CFolderDialog::CFolderDialog(CString* pPath) : CFileDialog(TRUE, NULL, _T("*..*")) { m_pPath = pPath; } BEGIN_MESSAGE_MAP(CFolderDialog, CFileDialog) //{{AFX_MSG_MAP(CFolderDialog) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP END_MESSAGE_MAP() // Function name : WindowProcNew // Description : Call this function when user navigate into CFileDialog. // Return type : LRESULT // Argument : HWND hwnd // Argument : UINT message // Argument : WPARAM wParam // Argument : LPARAM lParam LRESULT CALLBACK WindowProcNew(HWND hwnd,UINT message, WPARAM wParam, LPARAM lParam) { if (message == WM_COMMAND) if (HIWORD(wParam) == BN_CLICKED) if (LOWORD(wParam) == IDOK) { if (CFileDialog* pDlg = (CFileDialog*)CWnd::FromHandle(hwnd)) { TCHAR path[MAX_PATH]; GetCurrentDirectory(MAX_PATH, path); *((CFolderDialog*)pDlg->GetDlgItem(0))->m_pPath = CString(path); pDlg->EndDialog(IDOK); return NULL; } } return CallWindowProc(CFolderDialog::m_wndProc, hwnd, message, wParam, lParam); } // Function name : CFolderDialog::OnInitDone // Description : For update the wiew of CFileDialog // Return type : void void CFolderDialog::OnInitDone() { HideControl(edt1); HideControl(stc3); HideControl(cmb1); HideControl(stc2); CWnd* pFD = GetParent(); CRect rectCancel; pFD->GetDlgItem(IDCANCEL)->GetWindowRect(rectCancel); pFD->ScreenToClient(rectCancel); CRect rectOK; pFD->GetDlgItem(IDOK)->GetWindowRect(rectOK); pFD->ScreenToClient(rectOK); pFD->GetDlgItem(IDOK)->SetWindowPos(0,rectCancel.left - rectOK.Width() - 4, rectCancel.top, 0,0, SWP_NOZORDER | SWP_NOSIZE); CRect rectList2; pFD->GetDlgItem(lst1)->GetWindowRect(rectList2); pFD->ScreenToClient(rectList2); pFD->GetDlgItem(lst1)->SetWindowPos(0,0,0,rectList2.Width(), abs(rectList2.top - (rectCancel.top - 4)), SWP_NOMOVE | SWP_NOZORDER); SetControlText(IDOK, _T("Select")); pFD->SetWindowText(_T("Choose folder")); m_wndProc = (WNDPROC)SetWindowLong(pFD->m_hWnd, GWL_WNDPROC, (long)WindowProcNew); }
27. juni 2002 - 14:21
#10
Jeg dropper spørgsmålet, jeg har ikke fundet noget brugbart...
Kurser inden for grundlæggende programmering