怎么没有标题栏呢,你在对话框的property里面,style选项卡里面的title bar勾上了吗?

解决方案 »

  1.   

    试试AfxGetApp()->SetIcon(IDR_...);
      

  2.   

    如果你不能用title bar的话,就只能自己新建一个bitmap资源,然后用DC和CBitmap把手动装载,然后自己画到上面去了,在paint()函数里面写代码BitBlt()函数,可以自己参考MSDN。
      

  3.   

    2 cloudstrife(c_cloud) 因为这个程序不能用标题栏的,我把他去掉了,就是把style选项卡里面的title bar取消了。
    有没有办法呢?
      

  4.   

    2 wxmchuanzhang(小雪) 我试了,没有标题栏,给这个程序加不上窗口图标。
      

  5.   

    如果你不要标题栏,却想要窗口的图标,可以加入一个PICTURE控件,属性中TYPE为ICON,IMAGE
    为IDR_MAINFRAME;
      

  6.   

    2 cloudstrife(c_cloud) 我指的是往任务栏上的提示区(不是系统托盘)加图标。
      

  7.   

    如果你不要标题栏,却想要窗口的图标,可以加入一个PICTURE控件,属性中TYPE为ICON,IMAGE
    为IDR_MAINFRAME; 这不就行了
      

  8.   

    有一个方法可以:你不要在资源编辑器中去掉标题栏!!着一点很重要。直接编辑.rc文件,找到对话框那一向,在style中手动删除WS_CAPTION,OK,编译执行,标题栏没有了,但icon被保留了。good luck
      

  9.   

    用Shell_NotifyIcon()函数可以实现往托盘中添加图标,另外还需要响应对图标的点击消息
      

  10.   

    你可以通过构造一个CWindowDC类在上面画图的。
      

  11.   

    jeff_hunter 说的有理
    给分吧
      

  12.   

    2 jeff_hunter(PandaLee)我试了,只要把.rc文件中的WS_CAPTION删掉,资源编辑器中的对话框标题栏就没有了,程序运行还是以前的那个样子,没有图标。
      

  13.   

    你可以这样,首先在资源编辑中编辑时,不要去掉title bar,在程序运行时,动态去掉title.
    在initdialog或create中去掉title,程序显示出来后,任务栏上有图标,但程序已经没有title了,ModifyStyle(WS_CAPTION,0,SWP_DRAWFRAME);
      

  14.   

    加上标题很容易,只需在OnInitDialog()中,用SetWindowText("标题");即可.
    但要加上图标比较麻烦.
      

  15.   

    2 zhaoyao73(小赵) 能不能给我一点具体的代码,先谢谢了!
      

  16.   

    你要在对话框有system menu的情况下这样做,就是在你的对话框可以显示图标时这样做,不信你new一个dialog base的工程试试。
    在多说一句,你要做CRgn的窗口吧,那有标题栏也不妨碍呀,何必搞的这么麻烦
      

  17.   

    zhaoyao73(小赵)说的照更正一些,我的是歪招
    在OnInitDialog()中家ModifyStyle(WS_CAPTION,0,SWP_DRAWFRAME); 就OK,我试了
      

  18.   

    在onPaint()消息里,判断IsIconic(),如果为真,如下代码:
                       CPaintDC dc(this); 
    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;
    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
      

  19.   

    请tinytot稍等, 马上就有答案了...
      

  20.   

    我不已经告诉你了吗?在资源编辑器中,把对话框的title bar属性加上,然后
    用classwizard重载对话框的
    BOOL CMYdialog::OnInitDialog() 
    {
      ModifyStyle(WS_CAPTION,0,SWP_DRAWFRAME); 
    }就可以了,你试试
      

  21.   

    有一个方法是这样的:
    请你把目前的这个对话框作为第二个对话框。
    然后重新生成一个对话框,并且把它的客户区的大小改变为0。这样这个对话框在运行的时候就不会显示。把这个新的对话框的Title Bar加上这样一来任务栏中的图标就有了。
    在这个对话框的InitDialog中再把第二个 POPUP 出来这样就可以了。
      

  22.   

    首先你在资源编辑框中定义一个图标,然后在加入以下语句
    // put icon in system tray
        NOTIFYICONDATA nid;
    nid.cbSize = sizeof(NOTIFYICONDATA);
    nid.hWnd = m_hWnd;
    nid.uID=ID_MYTRAY; 
    nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
    nid.uCallbackMessage=WM_MYTRAY;
    nid.hIcon=AfxGetApp()->LoadIcon(IDI_MY_ICON);
              strcpy(nid.szTip,"My Icon Tip");
    ::Shell_NotifyIcon(NIM_ADD,&nid);
    之后,你就可以在托盘区中看到你自己定义的图标。
    若要删除该图标,最好是在创建图标的程序退出时的WM_CLOSE消息处理中完成:
             NOTIFYICONDATA nid;
    nid.cbSize = sizeof(NOTIFYICONDATA);
    nid.hWnd = m_hWnd;
    nid.uID=ID_MYTRAY; 
    nid.uFlags=0;
    ::Shell_NotifyIcon(NIM_DELETE,&nid);
      

  23.   

    tinytot(彧) 你还在关注吗?如果要源码,请说话。
      

  24.   

    谢谢大家对我倾囊相助,我的问题解决了,尤其感谢zhaoyao73(小赵) 和jeff_hunter(PandaLee) 二位大虾。说吧,你们俩要多少分,以我目前的分只能给到300分。另外,谢谢其他人的参与,每人都有份。
      

  25.   

    2 victorlee_lq(victor) 当然要了,咱们可以多交流交流,我先谢谢你了。[email protected] 请往这里发。
      

  26.   

    我的方法是从Delphi和C++ Builder中借鉴而来的...
      

  27.   

    告诉你个简单的办法,将对话框的Title bar和system menu 都点上,然后用 class wizard 打开WM_NCPAINT 消息,然后什么都不用做了,呵呵run一下即可
      

  28.   

    2 laolaoli(老李) 你这个方法不好用呀,我试了,不行,还是小赵的方法最好用。
      

  29.   

    在Project->Options中选Application,再修改其中的ICON即可。
      

  30.   

    最简单在OnInitDialog中加入SendMessage(WM_SETICON,GetSafeHwnd(),(WPARAM)ICON_SMALL,(LPARAM)hIcon);
      

  31.   

    再加一行ModifyStyle(0,WS_SYSMENU,0)因为WS_SYSMENU样式是决定小ICON显示与否的关键
    或者直接改.rc文件在对话框的STYLE中加入WS_SYSMENU,但仍然要加SendMessage(WM_SETICON,GetSafeHwnd(),(WPARAM)ICON_SMALL,(LPARAM)hIcon);
      

  32.   

    1.先将 Style 中 TileBar 选中。
    2.AfxGetMainHWnd()->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), false);