首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求高手,小弟我知道,按钮其实也是一个窗口,那么要怎么在按钮中添加图片呢?--SDK编程

2012-06-17 
求高手,我知道,按钮其实也是一个窗口,那么要如何在按钮中添加图片呢?--SDK编程我做了一个简单的程序,代码

求高手,我知道,按钮其实也是一个窗口,那么要如何在按钮中添加图片呢?--SDK编程
我做了一个简单的程序,代码如下:#include <Windows.h>
#include <iostream>
#include "resource.h"
HINSTANCE hInst;
#pragma comment(lib,"WINMM.LIB")
using namespace std;

LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
static UINT cx,cy;
static HWND hButton;
HDC hdc,hdc1;
HBITMAP hBmp;
PAINTSTRUCT pp,qq;
switch(uMsg)
{
case WM_CREATE:
hButton=CreateWindow("BUTTON",TEXT(""),WS_CHILD|WS_VISIBLE,10,10,50,50,hwnd,NULL,NULL,NULL);//创建按钮

PlaySound(TEXT("D:/KuGou/Oppo 广告音乐.wav"),NULL,SND_ASYNC|SND_LOOP);//播放声音
break;
case WM_COMMAND:
if(((HWND)lParam==hButton)&&(HIWORD(wParam)==BN_CLICKED))//单击按钮
{
hBmp =LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1));
hdc1 = CreateCompatibleDC(NULL);//创建兼容性DC
SelectObject(hdc1, hBmp);//选择位图
hdc=BeginPaint(hButton,&qq);
BitBlt(hdc,0,0,300,300,hdc1,0,0,SRCCOPY);
EndPaint(hButton,&qq);
DeleteObject(hBmp);
DeleteDC(hdc1);
}
break;
case WM_SIZE:
cx=LOWORD(lParam);//获取窗口宽度
cy=HIWORD(lParam);//获取窗口高度
break;
case WM_PAINT:
hBmp =LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1));
hdc1 = CreateCompatibleDC(NULL);//创建兼容性DC
SelectObject(hdc1, hBmp);//选择位图
hdc=BeginPaint(hwnd,&pp);
BitBlt(hdc,60,60,300,300,hdc1,0,0,SRCCOPY);
EndPaint(hwnd,&pp);
DeleteObject(hBmp);
DeleteDC(hdc1);
break;
case WM_LBUTTONDOWN:
break;
case WM_RBUTTONDOWN:

break;
case WM_CLOSE:
if (IDYES==MessageBox(hwnd,TEXT("你想要结束游戏?"),TEXT("拼图"),MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(NULL);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

return 0;
}

int WINAPI WinMain(
HINSTANCE hInstance, //实例句柄
HINSTANCE hPrevInstance, // 上一个实例的句柄
LPSTR lpCmdLine, // 命令行指针队列
int nCmdShow // 窗口显示方式
)
{
WNDCLASS win7;
win7.cbClsExtra=0;
win7.cbWndExtra=0;
win7.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//画刷句柄
win7.hCursor=LoadCursor(NULL,IDC_ARROW);//光标句柄
win7.hIcon=LoadIcon(NULL,IDI_QUESTION);//图标句柄
win7.hInstance=hInstance;//实例句柄
win7.lpfnWndProc=WindowProc;//窗口创建过程
win7.lpszClassName=TEXT("win7-li"); //窗口类的名
win7.lpszMenuName=NULL; //窗口菜单的名
win7.style=CS_HREDRAW|CS_VREDRAW;//窗口风格::CS_HREDRAW当窗口水平方向的宽度变化时重绘整个窗口.CS_VREDRAW 当窗口垂直方向的宽度变化时重绘整个窗口


RegisterClass(&win7);

HWND hwnd;

hwnd=CreateWindow(
TEXT("win7-li"),
TEXT("拼图"),
WS_OVERLAPPEDWINDOW,
(GetSystemMetrics(SM_CXSCREEN))/2-400,//获取屏幕宽度,使窗口在屏幕中央显示
(GetSystemMetrics(SM_CYSCREEN))/2-300,//获取屏幕高度,使窗口在屏幕中央显示
800,//宽800像素
600,//高600像素
NULL,//父窗口句柄
NULL,//菜单句柄
hInstance,//实例句柄
NULL);//

hInst=hInstance;
ShowWindow(hwnd,SW_SHOWNORMAL);//显示窗口
UpdateWindow(hwnd);//更新窗口


MSG msg;
while(GetMessage(&msg,NULL,0,0))//获得消息队列
{
TranslateMessage(&msg);
DispatchMessage(&msg);//将消息发送给窗口过程
}
return 0;
}

[解决办法]
BitBlt
[解决办法]
你叫赵中?

热点排行