📄 subject_27511.htm
字号:
<p>
序号:27511 发表者:小荣 发表日期:2003-01-12 22:02:24
<br>主题:为什么我的静态控件不能显示?????
<br>内容:请看下面的函数:<BR>#include "stdafx.h"<BR>#include <windows.h><BR>#include <stdio.h><BR>#include <stdlib.h><BR><BR>#define IDS_BITMAP 101 //定义静态控件句柄<BR>char lpszClassName1[]="STATIC";<BR>char lpszText[]="";<BR>HWND hwndStatic;//静态控件句柄<BR>HINSTANCE hInst;<BR>HDC hdc;<BR>HDC hdcmem;<BR>HBITMAP hBm;<BR>BITMAP bm;<BR><BR>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);<BR><BR>int WINAPI WinMain(HINSTANCE hInstance,<BR> HINSTANCE hPrevInst,<BR> LPSTR lpszCmdLine,<BR> int nCmdShow)<BR>{<BR> HWND hwnd;<BR> MSG Msg;<BR> WNDCLASS wndclass;<BR> char lpszClassName[]="控件";<BR> char lpszTitle[]="静态控件——这是美丽的花朵";<BR> wndclass.style=0;<BR> wndclass.lpfnWndProc=WndProc;<BR> wndclass.cbClsExtra=0;<BR> wndclass.cbWndExtra=0;<BR> wndclass.hInstance=hInstance;<BR> wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);<BR> wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);<BR> wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);<BR> wndclass.lpszMenuName=NULL;<BR> wndclass.lpszClassName=lpszClassName;<BR> if(!RegisterClass(&wndclass))<BR> {<BR> MessageBeep(0);<BR> return FALSE;<BR> }<BR> hInstance;<BR> hwnd=CreateWindow(lpszClassName,<BR> lpszTitle, <BR> WS_OVERLAPPEDWINDOW, <BR> CW_USEDEFAULT, <BR> CW_USEDEFAULT, <BR> CW_USEDEFAULT, <BR> CW_USEDEFAULT, <BR> NULL, <BR> NULL,<BR> hInstance,<BR> NULL);<BR> hBm=LoadBitmap(hInst,"Internet_Wall");//加载位图资源<BR> GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);//获取位图信息<BR> sprintf(lpszText,"该位图的高度为%d,宽度为%d。",bm.bmHeight,bm.bmWidth);<BR> ShowWindow(hwnd,nCmdShow);<BR> UpdateWindow(hwnd);<BR> while(GetMessage(&Msg,NULL,0,0))<BR> {<BR> TranslateMessage(&Msg);<BR> DispatchMessage(&Msg);<BR> }<BR> return Msg.wParam;<BR>}<BR><BR>LRESULT CALLBACK WndProc(HWND hwnd,<BR> UINT message,<BR> WPARAM wParam,<BR> LPARAM lParam)<BR>{ <BR> PAINTSTRUCT ps;<BR> switch(message)<BR> {<BR> case WM_CREATE:<BR> AnimateWindow(hwnd,500,AW_CENTER);<BR> hwndStatic=CreateWindow(lpszClassName1,<BR> "Internet_Wall",<BR> //设置静态控件风格<BR> WS_CHILD|WS_VISIBLE|WS_BORDER|SS_BITMAP|SS_NOTIFY,<BR> 180,180,<BR> 350,200,<BR> hwnd,<BR> (HMENU)IDS_BITMAP,<BR> hInst,<BR> NULL); <BR> hdc=GetDC(hwndStatic);<BR> hdcmem=CreateCompatibleDC(hdc);<BR> ReleaseDC(hwndStatic,hdc);<BR> break;<BR> case WM_PAINT:<BR> hdc=BeginPaint(hwndStatic,&ps);<BR> SelectObject(hdcmem,hBm);<BR> BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);<BR> EndPaint(hwndStatic,&ps);<BR> break;<BR> case WM_COMMAND:<BR> switch(LOWORD(wParam))<BR> {<BR> case IDS_BITMAP:<BR> DestroyWindow(hwndStatic);<BR> hdc=GetDC(hwnd);<BR> TextOut(hdc,130,100,lpszText,strlen(lpszText));<BR> ReleaseDC(hwnd,hdc);<BR> break;<BR> }<BR> break;<BR> case WM_DESTROY:<BR> DeleteObject(hBm);<BR> PostQuitMessage(0);<BR> AnimateWindow(hwnd,500,AW_HIDE|AW_CENTER);<BR> <BR> break;<BR> default:<BR> return DefWindowProc(hwnd,message,wParam,lParam);<BR> }<BR> return 0;<BR>}<BR><BR><BR>资源文件为:<BR>Internet_Wall BITMAP e:\Internet_Wall.bmp<BR><BR>程序运行后却调不出图片:E:\Internet_Wall.bmp<BR>且点击控件后响应消息总是提示为<BR>:该位图高度为:0,宽度为:0<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>
回复者:爱丽思 回复日期:2003-01-13 11:33:58
<br>内容:用MFC写哎
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:David Wong 回复日期:2003-01-13 14:13:35
<br>内容:LoadBitmap (<BR> hInst<BR> MAKEINTRESOURCE(Internet_Wall)<BR> );<BR>试试
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sky++ 回复日期:2003-01-13 16:12:53
<br>内容:应该是LoadBitmap失败,你的“Internet_Wall”是资源ID吗?如果是,按David Wong 的写
<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -