Oprettet man. d. 17. juni 2002 kl. 16:28:05

ladyhawke
ladyhawke (33.932 point. Point ude: 220)

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

Skrevet man. d. 17. juni 2002 kl. 22:46:25| #1

kamikaze
kamikaze (23.227 point)
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 );

Skrevet man. d. 17. juni 2002 kl. 22:47:03| #2

kamikaze
kamikaze (23.227 point)
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

Skrevet man. d. 17. juni 2002 kl. 22:48:13| #3

kamikaze
kamikaze (23.227 point)
(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");
}

Skrevet tir. d. 18. juni 2002 kl. 08:02:54| #4

ladyhawke
ladyhawke (33.932 point)
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"...

Skrevet tir. d. 18. juni 2002 kl. 09:26:08| #5

kamikaze
kamikaze (23.227 point)
Ok - det var da værd at prøve.... :-(

Skrevet tir. d. 18. juni 2002 kl. 09:29:31| #6

kamikaze
kamikaze (23.227 point)
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);
}

Skrevet tir. d. 18. juni 2002 kl. 09:33:36| #7

kamikaze
kamikaze (23.227 point)
SORRY - Glem det sidste indlæg. Det virker selvfølgelig ikke....

Skrevet tir. d. 18. juni 2002 kl. 09:52:05| #8

ladyhawke
ladyhawke (33.932 point)
hmmm, måske hvis jeg poster koden til folder browseren?

Skrevet tir. d. 18. juni 2002 kl. 10:20:38| #9

ladyhawke
ladyhawke (33.932 point)
#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);
}

Skrevet tor. d. 27. juni 2002 kl. 14:21:16| #10

ladyhawke
ladyhawke (33.932 point)
Jeg dropper spørgsmålet, jeg har ikke fundet noget brugbart...

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Updater Hybrid App

Oprettet den 18. april 2012 kl. 13.29
sir_madsen giver 100 point for svar | Giv et svar »

Ansi-c win32API - kan ikke oprette Richedit4.1 kontrol

Oprettet den 16. april 2012 kl. 22.13
cblcbl giver 60 point for svar | Giv et svar »

Iphone Objective C - Sætte image på et imageview.

Oprettet den 7. april 2012 kl. 11.36
lasserasch giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger