win32汇编,我用LoadBitmap装入资源位图,然后CreateCompatibleDC为位图建立一个DC,最后用SelectObject将位图装入DC,但是在屏幕并看不到我装入的位图,这是什么原因呢?
------解决方案--------------------
你还得GetDC你的窗口,然后BitBlt。
------解决方案--------------------
你只是创建了一个有位图的DC,要画在窗口上是需要窗口的DC上有东西,所以你需要把位图DC复制到窗口DC上。怎么复制(应该叫传送)参考BitBlt函数。
------解决方案--------------------
如上,你要取得屏幕或某个窗口的绘图句柄然后用绘图函数画图才行
------解决方案--------------------
仅供参考
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
HWND WINAPI GetConsoleWindow();
void HideTheCursor() {
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (GetConsoleCursorInfo(hStdOut, &cciCursor)) {
cciCursor.bVisible = FALSE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
void ShowTheCursor() {
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (GetConsoleCursorInfo(hStdOut, &cciCursor)) {
cciCursor.bVisible = TRUE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
int main() {
HWND hwnd;
HDC hdc;
HFONT hfont;
HBITMAP hbm;
HDC hdcBits;
BITMAP bm;
system("color F0");
system("cls");
HideTheCursor();
hwnd = GetConsoleWindow();
hdc = GetDC(hwnd);
hbm=LoadImage(0,"C:\\Windows\\Soap Bubbles.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE
------解决方案--------------------
LR_LOADFROMFILE);
if (hbm) {
hdcBits = CreateCompatibleDC(hdc);
GetObject (hbm, sizeof(BITMAP), &bm);
SelectObject(hdcBits,hbm);
BitBlt(hdc,200,10,bm.bmWidth, bm.bmHeight,hdcBits,0,0,SRCCOPY);
DeleteDC(hdcBits);
DeleteObject(hbm);
}
hfont = CreateFont(24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");
SelectObject(hdc,hfont);
SetTextColor(hdc,RGB(255,255,255));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,210,30,"这个背景是泡泡",14);
DeleteObject(hfont);
ReleaseDC(hwnd,hdc);
getch();
system("color 07");
system("cls");
ShowTheCursor();
return 0;
}