📄 subject_49676.htm
字号:
<p>
序号:49676 发表者:钟小立 发表日期:2003-08-12 22:08:05
<br>主题:关于加载图象问题
<br>内容:程序如下:<BR>问题是窗口中不显示位图,请大侠帮忙!<BR>#include <windows.h><BR>long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);<BR>BOOL InitWindowsClass(HINSTANCE hInstance);<BR>BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);<BR>HFONT CreateFont(HDC hDC,int nCharHeight,int nCharWidth);<BR>HWND hWndMain;<BR>HDC hDC;<BR>HDC hdcmem;<BR>HBITMAP hBm;<BR>BITMAP bm;<BR>int iY=80;<BR>int iWindowWidth,iWindowHeight;<BR>char cUpWarn[]="已经达到顶部,不能再向上移动了";<BR>char cDownWarn[]="已经达到底部,不能再向下移动了";<BR>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdline,int nCmdShow)<BR>{<BR> MSG Message;//定义消息<BR> hBm=LoadBitmap(hInstance,"pic");//加载位图 //可能是这地方有问题<BR> GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);<BR> iWindowWidth=2*bm.bmWidth;<BR> iWindowHeight=2*bm.bmHeight;<BR> if(!InitWindowsClass(hInstance))<BR> return FALSE;<BR> if(!InitWindows(hInstance,nCmdShow))<BR> return FALSE;<BR> while(GetMessage(&Message,0,0,0))<BR> {<BR> TranslateMessage(& Message);<BR> DispatchMessage(& Message);<BR> }<BR> return Message.wParam;<BR>}<BR>long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)<BR>{<BR> PAINTSTRUCT ps;<BR> switch(iMessage)<BR> {<BR> case WM_LBUTTONDOWN:<BR> iY=iY-10;<BR> InvalidateRect(hWnd,NULL,1);<BR> break;<BR> case WM_RBUTTONDOWN:<BR> iY=iY+10;<BR> InvalidateRect(hWnd,NULL,1);<BR> break;<BR> case WM_KEYDOWN:<BR> switch(wParam)<BR> {<BR> case VK_UP:<BR> iY=iY-10; <BR> break;<BR> case VK_DOWN: <BR> iY=iY+10; <BR> break;<BR> }<BR> InvalidateRect(hWnd,NULL,1);<BR> break;<BR> case WM_CREATE:<BR> hDC=GetDC(hWnd);<BR> hdcmem=CreateCompatibleDC(hDC);<BR> ReleaseDC(hWnd,hDC);<BR> case WM_PAINT:<BR> hDC=BeginPaint(hWnd,&ps);<BR> if(iY>0&&iY<iWindowHeight/2)<BR> {<BR> SelectObject(hdcmem,hBm);<BR> BitBlt(hDC,60,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);<BR> if(bm.bmWidth!=0||bm.bmHeight!=0)<BR> TextOut(hDC,0,0,"no signal",9);<BR> }<BR> else <BR> if(iY<=0)<BR> {<BR> TextOut(hDC,0,0,cUpWarn,sizeof(cUpWarn));<BR> }<BR> else<BR> {<BR> TextOut(hDC,0,0,cDownWarn,sizeof(cDownWarn));<BR> }<BR> EndPaint(hWnd,&ps);<BR> break;<BR> case WM_DESTROY:<BR> DeleteObject(hBm);<BR> PostQuitMessage(0);<BR> return 0;<BR> default:<BR> return(DefWindowProc(hWnd,iMessage,wParam,lParam));<BR> }<BR> return 0;<BR>}<BR><BR>BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)<BR>{<BR> HWND hWnd;<BR> hWnd=CreateWindow("BitmapInstance","我的位图显示实例程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,iWindowWidth,iWindowHeight,NULL,NULL,hInstance,NULL);<BR> if(!hWnd)<BR> return FALSE;<BR> hWndMain=hWnd;<BR> ShowWindow(hWnd,nCmdShow);//显示窗口<BR> UpdateWindow(hWnd);//刷新用户区<BR> return TRUE;<BR>}<BR><BR>BOOL InitWindowsClass(HINSTANCE hInstance)<BR>{<BR> WNDCLASS WndClass;<BR> WndClass.cbClsExtra=0;<BR> WndClass.cbWndExtra=0;<BR> WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));<BR> WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);<BR> WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);<BR> WndClass.hInstance=hInstance;<BR> WndClass.lpfnWndProc=WndProc;<BR> WndClass.lpszClassName="BitmapInstance";<BR> WndClass.lpszMenuName="Menu";<BR> WndClass.style=0;<BR> return RegisterClass(&WndClass);//注册窗口类<BR>}<BR><BR><BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:佳明 回复日期:2003-08-12 22:20:26
<br>内容:hBm=LoadBitmap(hInstance,"pic");//加载位图 //可能是这地方有问题<BR>你那个"pic"是文件名还是资源ID呀?<BR>如果文件名是pic.bmp,就写hBm=LoadBitmap(NULL,"pic.bmp");<BR>如果ID是IDC_PIC,就写hBm=LoadBitmap(hInstance,MAKEINTRESOURCE(IDC_PIC));<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -