vc6象导生成的sdi//所有步凑都是默认的然后它生成的东西编译后是个sdi应用程序,我不知道这个里边的菜单项里的工具栏,状太栏那两项在哪响应的,好心人给讲讲讲

解决方案 »

  1.   


    47357696(Aresの银羽) 03:12:41 
    把主框架OnCreate里的乱七八糟的东西删了就没工具栏和状态栏了
    617703(    大大) 03:13:28 
    怎么处理的菜单呀?我没找着呢?
    47357696(Aresの银羽) 03:13:42 
    菜单?
    47357696(Aresの银羽) 03:13:49 
    我也找不到,好象很麻烦哦
    617703(    大大) 03:14:11 
    你也没找到?那代码里没有怎么响应的呢?
    47357696(Aresの银羽) 03:14:25 
    你要去掉菜单还是干什么?47357696(Aresの银羽) 03:14:43 
    工具栏,状态栏,菜单全干掉了,你还不如用对话框程序
    617703(    大大) 03:15:55 
    我现在想看看vc自动生成的是怎么回事呢,你用象导生一个看看
    47357696(Aresの银羽) 03:16:39 
    菜单操作好象封了~
    应该在VC目录里能找到
    617703(    大大) 03:16:59 
    ????
    47357696(Aresの银羽) 03:17:13 
    MFC封装了
    617703(    大大) 03:18:00 
    晕,你做了没有啊?
    47357696(Aresの银羽) 03:18:32 
    做啥呀?
    617703(    大大) 03:19:24 
    你看看sdi怎么处理的那两个命令呢,,一个是工具栏,一个状态栏
    47357696(Aresの银羽) 03:20:01 
    创建,初始化,显示呢
    617703(    大大) 03:20:39 
    你编译完没?
    47357696(Aresの银羽) 03:20:46 

    47357696(Aresの银羽) 03:20:49 
    有问题?
    617703(    大大) 03:23:00 
    太有问题了
    47357696(Aresの银羽) 03:24:04 
    啥问题,说啊
    617703(    大大) 03:26:50 
    http://expert.csdn.net/Expert/topic/1795/1795590.xml?temp=.2609369
    47357696(Aresの银羽) 03:27:43 
    响应是什么概念?
    617703(    大大) 03:27:58 
    就是在哪处理的
    47357696(Aresの银羽) 03:28:22 
    每个工具栏有个ID啊
    617703(    大大) 03:29:03 
    晕,菜单是怎么处理的????
    47357696(Aresの银羽) 03:30:00 
    菜单的创建与初始化封在MFC库里了
    617703(    大大) 03:31:09 
    不用响应的吗?
    47357696(Aresの银羽) 03:32:06 
    每个菜单都有ID,
    响应Oncommand
    47357696(Aresの银羽) 03:32:13 
    你糊了?
    617703(    大大) 03:32:30 
    ??47357696(Aresの银羽) 03:32:46 
    不明白你的意思
    617703(    大大) 03:33:21 
    这样吧,你生成一个sdi很麻烦吗?如果不麻烦生一个,然后你看看再说好吧
    47357696(Aresの银羽) 03:33:59 
    我已经开了三个VC了
    617703(    大大) 03:34:00 
    我现在已经给四个人发消息了,不知道他们什么时候给回贴
    617703(    大大) 03:34:27 
    你生成一个sdi,很快的然后编译
    47357696(Aresの银羽) 03:35:30 
    没发现问题呀,怎么了?
    47357696(Aresの银羽) 03:35:46 
    你是不是说没加代码,那些菜单就可以用了?
    617703(    大大) 03:35:58 
    OK,对对,就是这个问题47357696(Aresの银羽) 03:36:07 
    。47357696(Aresの银羽) 03:36:35 这就象对话框中IDOK不要加代码就可以关闭对话框一样的啊
    617703(    大大) 03:37:00 
    我晕,,唉
    47357696(Aresの银羽) 03:37:19 
    你把菜单的ID改一下...47357696(Aresの银羽) 03:37:27 
    绝对不可以响应了
    47357696(Aresの银羽) 03:37:44 
    是上面的基类已经把这些事做好了
    47357696(Aresの银羽) 03:37:49 CWnd类
    47357696(Aresの银羽) 03:38:03 
    你想改就重载是了,不想改就不用管了
    617703(    大大) 03:38:22 
    你说 的ID到是有道理,我也这么想的
    617703(    大大) 03:38:39 
    哪把哪做好了?47357696(Aresの银羽) 03:39:03 
    CWnd类已经有OnFileOpen函数 
    OnAbout函数 
    47357696(Aresの银羽) 03:39:24 
    你的窗口类就继承了这些虚函数
    47357696(Aresの银羽) 03:39:30 
    当然不要写代码了
    617703(    大大) 03:40:07 
    晕,你没明白我意思,我是说工具栏,状太栏
    47357696(Aresの银羽) 03:40:21 
    一样的道理啊
    617703(    大大) 03:40:23 
    你打开sdi,47357696(Aresの银羽) 03:40:47 
    class CMainFrame : public CFrameWnd
    47357696(Aresの银羽) 03:41:00 
    应该是CFrameWnd类里有这函数了
    617703(    大大) 03:41:07 
    我说你不信,看sdi!!!!47357696(Aresの银羽) 03:41:12 
    看了
    617703(    大大) 03:41:23 
    我吐了,,找到查看菜单
    617703(    大大) 03:41:47 
    那个查看菜单你看到没有?
    47357696(Aresの银羽) 03:42:17 
    你是说他没有处理就能显示隐藏?
    617703(    大大) 03:42:24 
    对对对
    47357696(Aresの银羽) 03:43:02 
    等,我用SPY++看怎么传递消息的
    617703(    大大) 03:43:04 
    你要是能讲明白我给你200分,,
    617703(    大大) 03:43:30 
    我也看看
    47357696(Aresの银羽) 03:44:59 
    查找窗口
    47357696(Aresの银羽) 03:45:06 
    然后发送消息 47357696(Aresの银羽) 03:46:28 
    在隐藏的时候
    壮态收到了sizeparent和windowposchanged两个消息 
    47357696(Aresの银羽) 03:46:57 
    肯定是基类处理函数发过来的
    617703(    大大) 03:47:16 
    我收到了windowposchanged和windowsposchanging47357696(Aresの银羽) 03:48:29 
    CframeWnd向自己的子窗口发个消息不难吧
    617703(    大大) 03:49:06 
    怎么响应的呢?能把代码找出来吗??
    617703(    大大) 03:49:31 
    我自己写要代码的,完全能实现,ms不用代码就可以做到,你说怎么回事?
    47357696(Aresの银羽) 03:49:53 
    说了是基类上写的代码47357696(Aresの银羽) 03:50:03 你咋的还不明白呢
    617703(    大大) 03:50:26 
    基类上的代码总得有的吧?
    617703(    大大) 03:50:41 
    你也不能说没有代码的呀?
    47357696(Aresの银羽) 03:50:50 
    你找CFrameWnd的实现代码
    47357696(Aresの银羽) 03:51:00 
    在VC的安装目录下面
    617703(    大大) 03:51:29 
    我不管什么类的,菜单要响菜功能,不用代码就可以做到,真是让人服了
    47357696(Aresの银羽) 03:51:46 
    肯定用了代码的
    617703(    大大) 03:52:03 
    让我咋明白?你把代码找出来,我给你200分
    617703(    大大) 03:52:22 
    我给四个人发了消息,他们都不来答,是啥意思?
    47357696(Aresの银羽) 03:52:39 
    我倒了,在MFC库里
    你叫我怎么找
    你又把AfxMessageBox的实现代码找出
    47357696(Aresの银羽) 03:53:07 
    AfxMessageBox是调用api MessagBoxA与MessageBoxW
    617703(    大大) 03:53:14 
    处理菜单不用红就可以处理菜单命令?我服了
    47357696(Aresの银羽) 03:53:22 
    这些代码封在MFC库里了啊
    617703(    大大) 03:53:54 
    我在问,处理菜单不用消息应射就可以??
    617703(    大大) 03:54:33 
    答案我已经知道,肯定是可以,但不知道是为啥,ms又不说,搞人呐
    617703(    大大) 03:55:21 
    c什么类也没有处理这个的,就算有也要用红应射上去的
    47357696(Aresの银羽) 03:55:41 
    我倒 ̄
    617703(    大大) 03:56:10 
    你比方说,那个新建文件,人家就有处理了,用了个oncommand景射到机类上了617703(    大大) 03:56:38 
    你就倒吧,,我也倒,没办法喽
    47357696(Aresの银羽) 03:56:59 
    我把宏删掉,看MFC认不认识就知道了
    617703(    大大) 03:57:22 
     好啊,试试
    617703(    大大) 03:58:17 
    不响应
    47357696(Aresの银羽) 03:58:18 
    在工程里根本就没有定义ID_FILE_NEW这个宏
    说明这个宏是MFC强制定义了
    617703(    大大) 03:58:23 
    呵呵,解释吧
    617703(    大大) 03:58:56 
    晕,ID_FILE_NEW是个ID呀哈哈
    47357696(Aresの银羽) 03:59:07 
    ID也是宏啊
    617703(    大大) 03:59:14 
    没听说过
    47357696(Aresの银羽) 03:59:20 
    #@!¥#@!¥#@!¥
    47357696(Aresの银羽) 03:59:35 
    果然强
    617703(    大大) 03:59:39 
    你去csdn发贴问问吧
    617703(    大大) 04:00:02 
    你说我强?搞笑
    47357696(Aresの银羽) 04:00:44 
    你随便找个程序打开resource.h看看
    是不是所有的ID都是以宏的形式定义了
    47357696(Aresの银羽) 04:01:08 
    象ID_FILE_NEW是为了识别方便
    其实ID就是个数字 
    617703(    大大) 04:01:11 
    ID是define的617703(    大大) 04:01:40 
    define的就是红还是define本身是红你别搞错呀
    617703(    大大) 04:02:10 
    是个UINT呀,哈哈,是红吗?
    47357696(Aresの银羽) 04:02:11 
    算了,与你扯不清,你自己去想吧
    47357696(Aresの银羽) 04:02:19 
    ID_FILE_NEW是个宏
    617703(    大大) 04:02:36 
    那我去问问
      

  2.   

    AppWizard生成的SDI程序之所以不用写代码就能响应一些菜单是因为在CFrameWnd或者CFrameWnd的基类里已经有映射这些消息的响应函数,至于象ID_FILE_NEW,ID_FILE_OPEN之类的是不是宏,我想这就没有必要争了吧,有点C++基础的都应该会知道,打开resource.h就一目了然了,下面是摘自深入浅出MFC关于哪些ID的消息映射已经被基类处理的介绍拉㆘這些選單仔細瞧瞧,你會發現Framework 真的已經為我們做了不少瑣事。凡是選單
    項目會引起對話盒的,像是Open 對話盒、Save As 對話盒、Print 對話盒、Print Setup 對
    話盒、Find 對話盒、Replace 對話盒,都已經恭候差遣;Edit 選單㆖的每㆒項功能都已
    經可以應用在由CEditView 掌控的文字編輯器㆖;File 選單最㆘方記錄著最近使用過的
    (所謂LRU)㆕個檔案名稱(個數可在Appwizard ㆗更改),以方便再開啟;View 選
    單允許你把工具列和狀態列設為可見或隱藏;Window 選單提供重新排列子視窗圖示的
    能力,以及對子視窗的排列管理,包括卡片式(Cascade)或拼貼式(Tile)。㆘表是預設之選單命令項及其處理常式的摘要整理。最後㆒個欄位「是否預有關聯」如
    果是Yes,意指只要你的程式選單㆗有此命令項,當它被選按,自然就會引發命令處理
    常式,應用程式不需要在任何類別的Message Map ㆗攔截此命令訊息。但如果是No,
    選單內容命令項ID 預設的處理函式預有關聯
    New ID_FILE_NEW CWinApp::OnFileNew No
    Open ID_FILE_OPEN CWinApp::OnFileOpen No
    Close ID_FILE_CLOSE CDocument::OnFileClose Yes
    Save ID_FILE_SAVE CDocument::OnFileSave Yes
    Save As ID_FILE_SAVEAS CDocument::OnFileSaveAs Yes
    Print ID_FILE_PRINT CView::OnFilePrint No
    Print Pre&view ID_FILE_PRINT_PREVIEW CView::OnFilePrintPreview No
    Print Setup ID_FILE_PRINT_SETUP CWinApp::OnFilePrintSetup No
    "Recent File Name" ID_FILE_MRU_FILE1~4 CWinApp::OnOpenRecentFile Yes
      

  3.   

    我很菜,define我会用,但哪个是红分不清,嘿嘿//俺找书了,在c++primer中说的是预编译常量用C语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理
    器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产
    生一些微小的问题,这些问题在C + +中可通过使用c o n s t而避免。
    C语言中预处理器用值替代名字的典型用法是这样的:
    #define BUFSIZE 100这个就是传说中的宏吗?楼主的分是倒出来的还是这个问题vc6象导生成的sdi//所有步凑都是默认的然后它生成的东西编译后是个sdi应用程序,我不知道这个里边的菜单项里的工具栏,状太栏那两项在哪响应的,好心人给讲讲讲
      

  4.   

    #define BUFSIZE 100BUFSIZE到底是宏还是预编译常量??那#define又是啥???这个其实不重要,重要的是工具栏,状太栏那两项在哪响应的????
      

  5.   

    用C语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理
    器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产
    生一些微小的问题,这些问题在C + +中可通过使用c o n s t而避免。
    C语言中预处理器用值替代名字的典型用法是这样的:
    这段话是thinking in C++中的
      

  6.   

    wokao,你看看菜单中这两项的ID不就得了.ID_VIEW_TOOLBAR
    ID_VIEW_STATUS_BAR在CFrameWnd中有
    // turning on and off standard frame gadgetry
    ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS_BAR, OnUpdateControlBarMenu)
    ON_COMMAND_EX(ID_VIEW_STATUS_BAR, OnBarCheck)
    ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateControlBarMenu)
    ON_COMMAND_EX(ID_VIEW_TOOLBAR, OnBarCheck)
    ON_UPDATE_COMMAND_UI(ID_VIEW_REBAR, OnUpdateControlBarMenu)
    ON_COMMAND_EX(ID_VIEW_REBAR, OnBarCheck)
      

  7.   

    楼上在哪找到了CFrameWnd的实现代码
    我找了半天没找到,不然就不用和他浪费口水了
      

  8.   

    shilong别生气,这头猪整天没事搞事,哪天不爽我把他捅了,请你吃猪肉.
      

  9.   

    嘿嘿嘿明白了这些在msdn中怎么都没说呢?