用DEVC++编译器写了个抽纸牌并显示图片的小程序(本人对此编译器不太熟悉,要求用这个),抽十次卡牌并显示,最后显示其中最大的那张,调试运行时图片显示正常,但直接运行图片就会一闪而过,不知该如何解决。
//main.cpp
#include <stdio.h>
#include <time.h>
#include "graphio.h"
int main(void)
{
int pkcode;
int rank; //view:1-13
int max=-1;
srand(time(NULL));
for(int i=1;i<=10;i++)
{
pkcode=rand()%13;
rank=pkcode+1;
printf("我抽得一张方块%d\n",rank);
//此处请显示抽到的牌,能显示当前所有的牌
//......
printGraphPkFirstLine('d',rank);
if(rank>max)
max=rank;
}
//此处请显示max牌,一张
//......
printGraphPk(100,236,'d',max);
system("pause");
return 0;
}
void showBmp(HWND hwnd,int x,int y,int width,int high,float scale,char *imageName)
{
HDC hDC = GetDC(hwnd);
HINSTANCE hInstance = GetModuleHandle(NULL);
HBITMAP g_hBitMap =(HBITMAP)LoadImage(hInstance,imageName,
IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
HDC hBmpDC = CreateCompatibleDC(hDC);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hBmpDC, g_hBitMap);
//int width=120;
//int high=220;
int span=30;
//float m=0.3;
StretchBlt(hDC,x,y,scale*width,scale*high,hBmpDC,0,0,width,high,SRCCOPY);//修改图形大小
//BitBlt(hDC, x, y,
// width, high, hBmpDC, span+rank*width, 0, SRCCOPY);
SelectObject(hBmpDC, hOldBmp);
DeleteDC(hBmpDC);
ReleaseDC(hwnd, hDC);
}
int getsuit(int suit)
{
char a6;
switch (suit)
{
case 1:
a6='d';
break;
case 2:
a6='c';
break;
case 3:
a6='h';
break;
case 4:
a6='s';
break;
case 5:
a6='j';
break;
default:
a6='d';
}
return a6;
}
//printGraphPk(230,69,1,13); //--1
void printGraphPk(int x,int y,int suit,int rank)
{
HWND hwnd;
//HDC hDC;
char imageName[27]=".\\bmp\\3c.bmp";
char a6='8';
switch (rank)
{
case 1:
a6='a';
break;
case 0: //joker
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
a6='0'+rank;
break;
case 10:
a6='t'; //ten
break;
case 11:
a6='j';
break;
case 12:
a6='q';
break;
case 13:
a6='k';
break;
}
imageName[6]=a6;
if (suit>0&&suit<6)
suit=getsuit(suit);
imageName[7]=suit;
#ifdef DEBUG
printf("hello %s\n",imageName);
#endif
hwnd = GetConsoleWindow();
showBmp(hwnd,x,y,71,96,1,imageName);
}
void printGraphPkFirstLine(int suit,int rank)
{
static int x=139,y=76;
printGraphPk(x,y,suit,rank);
x=x+15;
}
//graphio.h
#include <windows.h>
#define EachSpan 12
extern "C"
{
WINBASEAPI HWND WINAPI GetConsoleWindow();
}
//黑桃spade,0,115;红桃heart,1,104;梅花club,3,99;方片diamond,2,100
void showBmp(HWND hwnd,int x,int y,int width,int high,float scale,char *imageName);
int getsuit(int suit);
//printGraphPk(230,69,1,13); //--1
void printGraphPk(int x,int y,int suit,int rank);
void printGraphPkFirstLine(int suit,int rank);
原以为可以用System("pause")解决,但是发现也没用,也搜索不到相关问题。
在return 0之前用getchar可以解决问题,但是这到底是什么原因啊?请大伙指教一下!
调试逐步执行就能显示
项目类型改为Windows窗口程序。