就是类似
按钮各状态的贴图,
对话框标题栏颜色,
滚动条的两头三角的各状态贴图,
滚动条的中间滑块的贴图
等等
在MFC中怎么得到当然系统主题的这些控件的贴图
控件系统资源贴图

解决方案 »

  1.   

    CBitmap::LoadOEMBitmapBOOL LoadOEMBitmap( UINT nIDBitmap );返回值:调用成功返回非零值,否则为0。参数: nIDBitmap 预定义的Windows位图的ID号。具体定义在头文件WINDOWS.H中。可用的值如下: OBM_BTNCORNERS OBM_OLD_RESTORE  
    OBM_BTSIZE OBM_OLD_RGARROW  
    OBM_CHECK OBM_OLD_UPARROW  
    OBM_CHECKBOXES OBM_OLD_ZOOM  
    OBM_CLOSE OBM_REDUCE  
    OBM_COMBO OBM_REDUCED  
    OBM_DNARROW OBM_RESTORE  
    OBM_DNARROWD OBM_RESTORED  
    OBM_DNARROWI OBM_RGARROW  
    OBM_LFARROW OBM_RGARROWD  
    OBM_LFARROWD OBM_RGARROWI  
    OBM_LFARROWI OBM_SIZE  
    OBM_MNARROW OBM_UPARROW  
    OBM_OLD_CLOSE OBM_UPARROWD  
    OBM_OLD_DNARROW OBM_UPARROWI  
    OBM_OLD_LFARROW OBM_ZOOM  
    OBM_OLD_REDUCE OBM_ZOOMD  
     说明:
    本函数用于加载一个Windows预定义的位图。以OBM_OLD开头的位图名表示它们是在Windows3.0之前的版本采用的。
    使用不是以OBM_OLD开头的常量,需要在包括头文件WINDOW.H之前定义常量OEMRESOURCE。我以前尝试过,不过得到的是VC6那种样式的。
      

  2.   

    多谢 至少给了一个方向!
    XP风格的有思路吗?
    Quote: 引用 1 楼 zhoujielunzhimi 的回复:

    CBitmap::LoadOEMBitmapBOOL LoadOEMBitmap( UINT nIDBitmap );我以前尝试过,不过得到的是VC6那种样式的。[/quote
      

  3.   

    Bitmap names that begin with OBM_OLD represent bitmaps used by Windows versions prior to 3.0.
    ms解释。
    你需要多试试那些id
      

  4.   

    给你一个示意代码:
    HTHEME hTheme = this->GetTHEME();
        if (hTheme)
        {
            HRESULT hr = DrawThemeBackground(hTheme, hDC, BP_PUSHBUTTON, GetThemeStateId(pDrawStruct->nState), &pDrawStruct->rc, 0);
        }
        else
        {
            DrawFrameControl(hDC, (RECT*)&pDrawStruct->rc, DFC_BUTTON, GetNoThemeStateId(pDrawStruct->nState));
        }