简单问题:CFileDialog 怎样设置初始化的显示方式以缩略图的方式显示呢?
谢谢!

解决方案 »

  1.   

    说详细些,你的要求?看你的帖子,虽然不难,可以实现起来还是有点繁的!你要用标准的CFileDialog吗?
      

  2.   

    是的,现在用CFileDialog在win2000和xp打开文件,通常是用“查看菜单“中的列表方式显示的,但是我想把他改成“缩略图”的方式,因为我打开的是图片,我在打开前就能看到预览的
    图片的,用户选择就跟方便了!
      

  3.   

    to SoLike:
       不知道你对这个有怎样的实现方法,谢谢!
      

  4.   

    我不太明白缩略图指的是什么样的方式。不过使用CFileDialg可以在虚函数OnInitDone里面配置界面,你可以将默认的显示改成你想要的界面。还可以在虚函数OnFileNameChange里面相应选中的文件,这个时候就可以将文件内容显示出来了。
    在dlgs.h头文件里面定义的是CFileDialog界面的控件ID。你可以通过GetDlgItem得到它们的CWnd对象来隐藏它,也可以创建自己的控件。
    #ifndef _DLGSH_INCLUDED_
    #define _DLGSH_INCLUDED_#define ctlFirst    0x0400
    #define ctlLast     0x04ff//
    //  Push buttons.
    //
    #define psh1        0x0400
    #define psh2        0x0401
    #define psh3        0x0402
    #define psh4        0x0403
    #define psh5        0x0404
    #define psh6        0x0405
    #define psh7        0x0406
    #define psh8        0x0407
    #define psh9        0x0408
    #define psh10       0x0409
    #define psh11       0x040a
    #define psh12       0x040b
    #define psh13       0x040c
    #define psh14       0x040d
    #define psh15       0x040e
    #define pshHelp     psh15
    #define psh16       0x040f//
    //  Checkboxes.
    //
    #define chx1        0x0410
    #define chx2        0x0411
    #define chx3        0x0412
    #define chx4        0x0413
    #define chx5        0x0414
    #define chx6        0x0415
    #define chx7        0x0416
    #define chx8        0x0417
    #define chx9        0x0418
    #define chx10       0x0419
    #define chx11       0x041a
    #define chx12       0x041b
    #define chx13       0x041c
    #define chx14       0x041d
    #define chx15       0x041e
    #define chx16       0x041f//
    //  Radio buttons.
    //
    #define rad1        0x0420
    #define rad2        0x0421
    #define rad3        0x0422
    #define rad4        0x0423
    #define rad5        0x0424
    #define rad6        0x0425
    #define rad7        0x0426
    #define rad8        0x0427
    #define rad9        0x0428
    #define rad10       0x0429
    #define rad11       0x042a
    #define rad12       0x042b
    #define rad13       0x042c
    #define rad14       0x042d
    #define rad15       0x042e
    #define rad16       0x042f//
    //  Groups, frames, rectangles, and icons.
    //
    #define grp1        0x0430
    #define grp2        0x0431
    #define grp3        0x0432
    #define grp4        0x0433
    #define frm1        0x0434
    #define frm2        0x0435
    #define frm3        0x0436
    #define frm4        0x0437
    #define rct1        0x0438
    #define rct2        0x0439
    #define rct3        0x043a
    #define rct4        0x043b
    #define ico1        0x043c
    #define ico2        0x043d
    #define ico3        0x043e
    #define ico4        0x043f//
    //  Static text.
    //
    #define stc1        0x0440
    #define stc2        0x0441
    #define stc3        0x0442
    #define stc4        0x0443
    #define stc5        0x0444
    #define stc6        0x0445
    #define stc7        0x0446
    #define stc8        0x0447
    #define stc9        0x0448
    #define stc10       0x0449
    #define stc11       0x044a
    #define stc12       0x044b
    #define stc13       0x044c
    #define stc14       0x044d
    #define stc15       0x044e
    #define stc16       0x044f
    #define stc17       0x0450
    #define stc18       0x0451
    #define stc19       0x0452
    #define stc20       0x0453
    #define stc21       0x0454
    #define stc22       0x0455
    #define stc23       0x0456
    #define stc24       0x0457
    #define stc25       0x0458
    #define stc26       0x0459
    #define stc27       0x045a
    #define stc28       0x045b
    #define stc29       0x045c
    #define stc30       0x045d
    #define stc31       0x045e
    #define stc32       0x045f//
    //  Listboxes.
    //
    #define lst1        0x0460
    #define lst2        0x0461
    #define lst3        0x0462
    #define lst4        0x0463
    #define lst5        0x0464
    #define lst6        0x0465
    #define lst7        0x0466
    #define lst8        0x0467
    #define lst9        0x0468
    #define lst10       0x0469
    #define lst11       0x046a
    #define lst12       0x046b
    #define lst13       0x046c
    #define lst14       0x046d
    #define lst15       0x046e
    #define lst16       0x046f//
    //  Combo boxes.
    //
    #define cmb1        0x0470
    #define cmb2        0x0471
    #define cmb3        0x0472
    #define cmb4        0x0473
    #define cmb5        0x0474
    #define cmb6        0x0475
    #define cmb7        0x0476
    #define cmb8        0x0477
    #define cmb9        0x0478
    #define cmb10       0x0479
    #define cmb11       0x047a
    #define cmb12       0x047b
    #define cmb13       0x047c
    #define cmb14       0x047d
    #define cmb15       0x047e
    #define cmb16       0x047f//
    //  Edit controls.
    //
    #define edt1        0x0480
    #define edt2        0x0481
    #define edt3        0x0482
    #define edt4        0x0483
    #define edt5        0x0484
    #define edt6        0x0485
    #define edt7        0x0486
    #define edt8        0x0487
    #define edt9        0x0488
    #define edt10       0x0489
    #define edt11       0x048a
    #define edt12       0x048b
    #define edt13       0x048c
    #define edt14       0x048d
    #define edt15       0x048e
    #define edt16       0x048f//
    //  Scroll bars.
    //
    #define scr1        0x0490
    #define scr2        0x0491
    #define scr3        0x0492
    #define scr4        0x0493
    #define scr5        0x0494
    #define scr6        0x0495
    #define scr7        0x0496
    #define scr8        0x0497#endif // _DLGSH_INCLUDED_
      

  5.   

    CFileDialog文件打开时,我们可以设置大图标,小图标、列表、详细资料、缩略图这几种方式显示的,如果是图片我们选择缩略图,我们就能看到图片的内容了,这些设置在2K以上的操作系统才行的。
      

  6.   

    chb2000 () 留个邮箱吧,我发给你。通过定制CFileDialog来实现
      

  7.   

    我有了一种解决方法,
    void CMyFileDialog::OnInitDone()
    {
    CFileDialog::OnInitDone();
     
        CWnd *parent = GetParent();
        if ( parent != NULL ) {
           parent->PostMessage(WM_COMMAND, 40964, NULL);
        }
    }
    40964是详细资料的ID号,但是我不知道缩略图的ID号,不知道有没有哪位大哥了解!
      

  8.   

    [email protected]
    谢谢 SoLike(是我)
      

  9.   

    噢,我知道了。
    在虚函数OnInitDone里面
    lst1为显示文件的listctrl控件
    CWnd* m_list = GetDlgItem(lst1)。
    然后修改它的属性
    dwStyle可以为
    LVS_ICON   Specifies icon view.
    LVS_LIST   Specifies list view.
    LVS_REPORT   Specifies report view.
    LVS_SMALLICON   Specifies small icon viewm_list->ModifyStyle(LVS_TYPEMASK,dwStyle & LVS_TYPEMASK);我找不到缩略图的属性。这种是一种标准的方法,如果不行的话,可以尝试得到设置缩略图的按钮,把它设置为缩略图类型。以上代码我没有经过测试。
      

  10.   


     To chb2000():    你说的那种parent->PostMessage(WM_COMMAND, 40964, NULL)我用了一下,是成功的,但是缩略图的消息ID是多少呢?
      高手快帮帮忙呀!
      

  11.   

    我用SPY跟踪缩略图的按键消息,发现他是给发送了一个自定义的消息
    我想这是这和其它的四种方式不一样,应该不是使用这种方法了!
      

  12.   


    怪不得,在程序中用钩子死活捕获不到这个消息ID;To chb2000():
       你用SPY跟踪得到的那个自定义消息ID是多少呀?我觉得直接发送消息也应该可以吧!
      

  13.   

    WM_USER + 302
    WM_USER + 300
      

  14.   


     To chb2000():
     哦!
     我刚才跟踪了一下,发现好像共产生4个这样的消息!
     WM_USER + 302
     WM_USER + 300
     WM_USER + 302
     WM_USER + 300
     可是这些消息根本不能用!
     郁闷,好像这个技术是个比较难的技术哟!
     我觉得不能用消息的方式来实现了!
      

  15.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1948789