2013-04-11 4 views
1

Растровое изображение не будет отображаться при нажатии левой кнопки мыши. Я использую Visual C++ выразитьC++, растровое изображение не будет отображаться?

HDC DC, memDC; 

switch(message) { 
case WM_CREATE: 
     hBit1 = LoadBitmap(hInst, "C:\New folder (2)\MyBP1.bmp"); 
     break; 

case WM_LBUTTONDOWN: 
      DC = GetDC(hwnd); 
      memDC = CreateCompatibleDC(DC); 
     SelectObject (memDC, hBit1); 
     BitBlt(DC, LOWORD(lParam), HIWORD(lParam), 27, 59, memDC, 0, 0, SRCCOPY); 
     ReleaseDC(hwnd, DC); 
     DeleteDC(memDC); 
     break; 

Я не знаю точно, что случилось с кодом. Там нет ошибки, отображаемой в Visual C++ выразить Если код все не так бы кто-то мне точку в правильном направлении

+0

Не отображаются ошибки, вы имеете в виду отсутствие ошибок/предупреждений компилятора или отсутствие ошибок при вызове функций (и вы, конечно, проверяете отказ)? – chris

+0

нет ошибок от компилятора – user1887092

+0

Ну, на этом проверку работоспособности откажитесь! :) – chris

ответ

6

LoadBitmap только для загрузки растровых изображений, которые хранятся в качестве ресурсов в исполняемом или DLL.

Для загрузки растрового изображения из файла BMP, вы хотите использовать LoadImage с LR_LOADFROMFILE флагом, что-то вроде этого:

bmp = (HBITMAP)LoadImage(0, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 

Как и в сторону, вы, вероятно, на самом деле не хотят, чтобы сделать отображение непосредственно в ответ на WM_LBUTTONDOWN. Вместо этого вы обычно хотите записать позицию, возможно, установите флаг, указывающий, что растровое изображение должно отображаться, и вызовите InvalidateRect, чтобы аннулировать ваш прямоугольник клиента, а затем выполните фактический чертеж в ответ на WM_PAINT.

Смежные вопросы