• Advertisement
Sign in to follow this  

weird problem

This topic is 4889 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

For some reason when I try to compile a Win32 program using C++ under Dev-C++ I cannot get my Icon to appear on a button. here is the source: /*main.cpp*/ #include <windows.h> #include <commctrl.h> #include <iostream> #include <def1.h> #define WIN32_LEAN_AND_MEAN #define OEMRESOURCE #if !defined ButtonControlsH #define ButtonControlsH #endif #if !defined LR_SHARED #define LR_SHARED #endif LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd; MSG msg; HICON hWndIcon; HCURSOR hCursor; TCHAR chClassName[]=TEXT("My Program"); WNDCLASSEX wcx; g_hInst = hInstance; hWndIcon = (HICON)LoadImage(0, IDI_APPLICATION, IMAGE_ICON, 0, 0, LR_SHARED); hCursor=(HCURSOR)LoadImage(0,IDC_ARROW,IMAGE_CURSOR,0,0,LR_SHARED); wcx.cbSize = sizeof(WNDCLASSEX); wcx.style = CS_HREDRAW|CS_VREDRAW; wcx.lpfnWndProc = (WNDPROC)WndProc; wcx.cbClsExtra = 0; wcx.cbWndExtra = 0; wcx.hInstance = hInstance; wcx.hIcon = hWndIcon; wcx.hCursor = hCursor; wcx.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); wcx.lpszMenuName = NULL; wcx.lpszClassName = chClassName; wcx.hIconSm = NULL; if (!RegisterClassEx(&wcx)) { MessageBox( NULL, TEXT("Failed to register wnd class"), TEXT("ERROR"), MB_OK|MB_ICONERROR); return FALSE; } hWnd=CreateWindowEx(0, chClassName, TEXT("My Program"), WS_OVERLAPPEDWINDOW, GetSystemMetrics(SM_CXSCREEN)/4, GetSystemMetrics(SM_CYSCREEN)/4, GetSystemMetrics(SM_CXSCREEN)/2, GetSystemMetrics(SM_CYSCREEN)/2, NULL, NULL, hInstance, NULL); if (!hWnd) { MessageBox( NULL, TEXT("Failed to create wnd"), TEXT("ERROR"), MB_OK|MB_ICONERROR); return FALSE; } ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg,NULL,0,0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam) { static HBITMAP hBmp; static HICON hIcon; static HWND hIconBtn; static HWND hBmpBtn; switch (Message) { case WM_CREATE: hIconBtn=CreateWindowEx(0, TEXT("BUTTON"), TEXT("NO TEXT"), WS_CHILD|WS_VISIBLE|BS_ICON, 240, 70, 80, 40, hWnd, NULL, g_hInst, NULL); hIcon=(HICON)LoadImage(NULL,MAKEINTRESOURCE(ICO_SMILE),IMAGE_ICON,0,0,LR_SHARED); /* When I replace ICO_SMILE with OBM_CHECK it will display a check mark but it won't show my image when I use ICO_SMILE (It shows nothing instead */ SendMessage(hIconBtn,BM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcon); break; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd,Message,wParam,lParam); } } /* res1.rc */ #include "def1.h" ICO_SMILE ICON "'directory'" /* def1.h */ #define ICO_SMILE 1005 // ------------------------------------------------------------- I've went to Project Options and made sure my resource script is included in the compilation and its still not working.

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
Hmmm, try not using "LR_SHARED" as the last parameter to LoadImage().

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement