我插了一个位图资源,ID为ID_PICthx

解决方案 »

  1.   

    还有,菜单的ID和菜单名(Menuname)分别是哪里设定的
      

  2.   

    hBm=LoadBitmap(hInstance,"picname");
    后面应该是文件名,不是ID.
      

  3.   

    hBm=LoadBitmap(hInstance,"picname");不行啊picname是不是ID_PIC的properties的file name
      

  4.   

    须先将BMP读入内存设备描述表,再拷至屏幕窗口。
    以下代码直接调用API,在VC++中句柄是隐含的,下列代码改写后才能用于VC++。  HDC     hMemDC;  //内存的DC
      BITMAP  bm;
      HBITMAP hBitmap, hOldBmp;  hBitmap=LoadBitmap(hInstance,ID_Bitmap);
      hMemDC=CreateCompatibleDC(hDC);  //窗口的DC
      hOldBmp=(HBITMAP)SelectObject(hDCMem,hBitmap);
      GetObject(hBitmap,sizeof(BITMAP),&bm);
      Bitblt(hDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
      ......
      ......
      ......
      

  5.   

    如果用MFC编程,则BMP的ID应在VC的Microsoft Developer Studio中定义,否则在自创的RC文件中定义,  如:MyBmp BITMAP "xxxx.bmp"
    其中MyBmp即为xxxx.bmp 的ID, 则有 LoadBitmap(hInstance,MyBmp);
      
      

  6.   

    #include<windows.h>
    #include<string.h>
    #include<stdlib.h>
    #include<stdio.h>
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); 
    HDC hdc;
    HDC hdcmem;
    HBITMAP hBm;
    BITMAP bm;int WINAPI WinMain(
       HINSTANCE hInstance,
       HINSTANCE hPrevInst,
       LPSTR lpszCmdLine,
       int nCmdShow)
    {
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass; char lpszClassName[]="BITMAP";
    char lpszTitle[]="Example_For_bitmap"; wndclass.style=0;
    wndclass.lpfnWndProc=WndProc;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName=NULL;
    wndclass.lpszClassName=lpszClassName; if(!RegisterClass(&wndclass))
    {
    MessageBeep(0);
    return FALSE;
    } hwnd=CreateWindow(lpszClassName,
    lpszTitle,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL); hBm=LoadBitmap(hInstance,"IDB_BITMAP");
    GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd); while(GetMessage(&Msg,NULL,0,0))
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    } return Msg.wParam;
    }LRESULT CALLBACK WndProc(HWND hwnd,
     UINT message,
     WPARAM wParam,
     LPARAM lParam)
    {
    PAINTSTRUCT ps;
    switch(message)
    {
    case WM_CREATE:
    hdc=GetDC(hwnd);
    hdcmem=CreateCompatibleDC(hdc);
    ReleaseDC(hwnd,hdc); case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    SelectObject(hdcmem,hBm); BitBlt(hdc,180,50,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY); EndPaint(hwnd,&ps);
    break;
    case WM_DESTROY:
    DeleteObject(hBm);
    PostQuitMessage(0);
    break; default:
    return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return 0;
    }

      

  7.   

    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by bitmap.rc
    //
    #define IDB_BITMAP                  101// Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        102
    #define _APS_NEXT_COMMAND_VALUE         40001
    #define _APS_NEXT_CONTROL_VALUE         1000
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif
      

  8.   

    //Microsoft Developer Studio generated resource script.
    //
    #include "resource.h"#define APSTUDIO_READONLY_SYMBOLS
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #include "afxres.h"/////////////////////////////////////////////////////////////////////////////
    #undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
    // Chinese (P.R.C.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    #ifdef _WIN32
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    #endif //_WIN32#ifdef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // TEXTINCLUDE
    //1 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "resource.h\0"
    END2 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "#include ""afxres.h""\r\n"
        "\0"
    END3 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "\r\n"
        "\0"
    END#endif    // APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Bitmap
    //IDB_BITMAP              BITMAP  DISCARDABLE     "pic7_2.bmp"
    #endif    // Chinese (P.R.C.) resources
    /////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    /////////////////////////////////////////////////////////////////////////////
    #endif    // not APSTUDIO_INVOKED
      

  9.   

    HBITMAP hBit = ::LoadBitmap(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDB_BUTTON1));
      

  10.   

    *************修正我在上面的两次回复****************须先将BMP读入内存设备描述表,再拷至屏幕窗口。
    以下代码直接用API写出,改写后才能用于VC++。  HDC     hMemDC;  //内存的DC
      BITMAP  bm;
      HBITMAP hBitmap, hOldBmp;  hBitmap=LoadBitmap(hInstance,BmpName); 或用 hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(BmpID));
    //BmpName 是BMP在RC文件中定义的名称(字符串),可与盘上的BMP文件名不同
    //BmpID 是BMP在RC文件中定义的标识符(WORD 型)
      hMemDC=CreateCompatibleDC(hDC);  //hDC 为屏幕窗口的DC
      hOldBmp=(HBITMAP)SelectObject(hDCMem, hBitmap);
      GetObject(hBitmap,sizeof(BITMAP), &bm);
      Bitblt(hDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
      ......
      ......
      ......//////////注意//////////////////////
    如果用MFC编程,在VC的Microsoft Developer Studio中似乎只能定义BmpID,且自动形成RC文件。则应采用
       LoadBitmap(hInstance, MAKEINTRESOURCE(BmpID));
     
    若能自创RC文件中,则可在RC中定义BmpName,  如以下语句:
       MyBmp BITMAP "xxxx.bmp" 
    其中MyBmp 即为xxxx.bmp在RC中的名称,这时应采用
       LoadBitmap(hInstance, "MyBmp"); 若在自创的RC文件中,如下定义:
       #define MyBmp  10001
       MyBmp BITMAP "xxxx.bmp"
    这时,MyBmp 成为xxxx.bmp在RC中的标识符,故应采用
       LoadBitmap(hInstance, MAKEINTRESOURCE(MyBmp)); 
      
      

  11.   

    SO夸张, 早按照laserman(我爱C++) 说的做不久结了.
    要费那么大的劲!
    HBITMAP hBit = ::LoadBitmap(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDB_BUTTON1));