控制台程序显示图片会消失

问题遇到的现象和发生背景

用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);
运行结果及报错内容

img

我的解答思路和尝试过的方法

原以为可以用System("pause")解决,但是发现也没用,也搜索不到相关问题。

在return 0之前用getchar可以解决问题,但是这到底是什么原因啊?请大伙指教一下!

我想要达到的结果

调试逐步执行就能显示

img

项目类型改为Windows窗口程序。