Displaying a different bitmap in different child windows? - win32 in C

Thread Solved
Reply

Join Date: Apr 2004
Posts: 11
Reputation: keir.whitlock is an unknown quantity at this point 
Solved Threads: 0
keir.whitlock's Avatar
keir.whitlock keir.whitlock is offline Offline
Newbie Poster

Displaying a different bitmap in different child windows? - win32 in C

 
0
  #1
Apr 12th, 2004
hi there, i am trying to get my program to display a different bitmap in four different child windows of my win32 C program but i cant seem to do it. Any idea's? I have got the information so far off of the forgers win32 tutorial.

  1.  
  2. #include <windows.h>
  3. #include <commctrl.h>
  4. #include "resource.h"
  5. const char g_szClassName[] = "myWindowClass";
  6. const char g_szChildClassName[] = "myMDIChildWindowClass";
  7. HBITMAP g_hbmBall = NULL;
  8. HWND g_hMDIClient = NULL;
  9. HWND g_hMainWindow = NULL;
  10. BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
  11. {
  12. switch(Message)
  13. {
  14. case WM_INITDIALOG:
  15. return TRUE;
  16. case WM_COMMAND:
  17. switch(LOWORD(wParam))
  18. {
  19. case IDOK:
  20. EndDialog(hwnd, IDOK);
  21. break;
  22. case IDCANCEL:
  23. EndDialog(hwnd, IDCANCEL);
  24. break;
  25. }
  26. break;
  27. default:
  28. return FALSE;
  29. }
  30. return TRUE;
  31. }
  32. //////////////////////////////////////////////////////////////////?/////////Default Child Window Class/////////////////
  33. ////////////////////////////////////////////////////
  34. /////////Default Child Window Class/////////////////
  35. ////////////////////////////////////////////////////
  36. HWND CreateNewMDIChild(HWND hMDIClient)
  37. {
  38. MDICREATESTRUCT mcs;
  39. HWND hChild;
  40. mcs.szTitle = "test";
  41. mcs.szClass = g_szChildClassName;
  42. mcs.hOwner = GetModuleHandle(NULL);
  43. mcs.x = mcs.cx = CW_USEDEFAULT;
  44. mcs.y = mcs.cy = CW_USEDEFAULT;
  45. mcs.style = MDIS_ALLCHILDSTYLES;
  46. hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
  47. if(!hChild)
  48. {
  49. MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...",
  50. MB_ICONEXCLAMATION | MB_OK);
  51. }
  52. return hChild;
  53. }
  54. /////////KEY GENERATION Child Window Class/////////////////
  55. ////////////////////////////////////////////////////
  56. HWND CreateNewMDIChildkey(HWND hMDIClient)
  57. {
  58. MDICREATESTRUCT mcs;
  59. HWND hChild;
  60. mcs.szTitle = "Pseudo Key Generation";
  61. mcs.szClass = g_szChildClassName;
  62. mcs.hOwner = GetModuleHandle(NULL);
  63. mcs.x = mcs.cx = CW_USEDEFAULT;
  64. mcs.y = mcs.cy = CW_USEDEFAULT;
  65. mcs.style = MDIS_ALLCHILDSTYLES;
  66. hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
  67. if(!hChild)
  68. {
  69. MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...",
  70. MB_ICONEXCLAMATION | MB_OK);
  71. }
  72. return hChild;
  73. }
  74. /////////CTAK Child Window Class/////////////////
  75. ////////////////////////////////////////////////////
  76. HWND CreateNewMDIChildctak(HWND hMDIClient)
  77. {
  78. MDICREATESTRUCT mcs;
  79. HWND hChild;
  80. mcs.szTitle = "CTAK Key Distribution";
  81. mcs.szClass = g_szChildClassName;
  82. mcs.hOwner = GetModuleHandle(NULL);
  83. mcs.x = mcs.cx = CW_USEDEFAULT;
  84. mcs.y = mcs.cy = CW_USEDEFAULT;
  85. mcs.style = MDIS_ALLCHILDSTYLES;
  86. hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
  87. if(!hChild)
  88. {
  89. MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...",
  90. MB_ICONEXCLAMATION | MB_OK);
  91. }
  92. return hChild;
  93. }
  94. /////////KAK Child Window Class/////////////////
  95. ////////////////////////////////////////////////////
  96. HWND CreateNewMDIChildkak(HWND hMDIClient)
  97. {
  98. MDICREATESTRUCT mcs;
  99. HWND hChild;
  100. mcs.szTitle = "KAK Key Distribution";
  101. mcs.szClass = g_szChildClassName;
  102. mcs.hOwner = GetModuleHandle(NULL);
  103. mcs.x = mcs.cx = CW_USEDEFAULT;
  104. mcs.y = mcs.cy = CW_USEDEFAULT;
  105. mcs.style = MDIS_ALLCHILDSTYLES;
  106. hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
  107. if(!hChild)
  108. {
  109. MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...",
  110. MB_ICONEXCLAMATION | MB_OK);
  111. }
  112. return hChild;
  113. }
  114. /////////FULL ENCRYPTION Child Window Class/////////////////
  115. ////////////////////////////////////////////////////
  116. HWND CreateNewMDIChildcryp(HWND hMDIClient)
  117. {
  118. MDICREATESTRUCT mcs;
  119. HWND hChild;
  120. mcs.szTitle = "Full Symmetric Encryption";
  121. mcs.szClass = g_szChildClassName;
  122. mcs.hOwner = GetModuleHandle(NULL);
  123. mcs.x = mcs.cx = CW_USEDEFAULT;
  124. mcs.y = mcs.cy = CW_USEDEFAULT;
  125. mcs.style = MDIS_ALLCHILDSTYLES;
  126. hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
  127.  
  128. if(!hChild)
  129. {
  130. MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...",
  131. MB_ICONEXCLAMATION | MB_OK);
  132. }
  133. return hChild;
  134. }
  135. /////////////////////////////////////////////////////////////////////////////
  136. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  137. {
  138. switch(msg)
  139. {
  140. case WM_CREATE:
  141. {
  142. HWND hTool;
  143. TBBUTTON tbb[4];
  144. TBADDBITMAP tbab;
  145. HWND hStatus;
  146. int statwidths[] = {100, -1};
  147. CLIENTCREATESTRUCT ccs;
  148. // Create MDI Client
  149. // Find window menu where children will be listed
  150. ccs.hWindowMenu = GetSubMenu(GetMenu(hwnd), 2);
  151. ccs.idFirstChild = ID_MDI_FIRSTCHILD;
  152. g_hMDIClient = CreateWindowEx(WS_EX_CLIENTEDGE, "mdiclient", NULL,
  153. WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE,
  154. CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  155. hwnd, (HMENU)IDC_MAIN_MDI, GetModuleHandle(NULL), (LPVOID)&ccs);
  156. if(g_hMDIClient == NULL)
  157. MessageBox(hwnd, "Could not create MDI client.", "Error", MB_OK | MB_ICONERROR);
  158. // Create Toolbar
  159. hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
  160. hwnd, (HMENU)IDC_MAIN_TOOL, GetModuleHandle(NULL), NULL);
  161. if(hTool == NULL)
  162. MessageBox(hwnd, "Could not create tool bar.", "Error", MB_OK | MB_ICONERROR);
  163. // Send the TB_BUTTONSTRUCTSIZE message, which is required for
  164. // backward compatibility.
  165. SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
  166.  
  167. tbab.hInst = HINST_COMMCTRL;
  168. tbab.nID = IDB_STD_SMALL_COLOR;
  169. SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tbab);
  170. ///////////MENU BUTTONS ALONG THE TOP///////////////
  171. /////////////////////////
  172. ZeroMemory(tbb, sizeof(tbb));
  173. tbb[0].iBitmap = "NULL";
  174. tbb[0].iString = "Key Generation";
  175. tbb[0].fsState = TBSTATE_ENABLED;
  176. tbb[0].fsStyle = TBSTYLE_BUTTON;
  177.  
  178. tbb[0].idCommand = ID_MENU_KEYGENERATION;
  179. tbb[1].iBitmap = "NULL";
  180. tbb[1].iString = "CTAK Distribution";
  181. tbb[1].fsState = TBSTATE_ENABLED;
  182. tbb[1].fsStyle = TBSTYLE_BUTTON;
  183. tbb[1].idCommand = ID_MENU_CTAKKEYDISTRIBUTION;
  184. tbb[2].iBitmap = "NULL";
  185. tbb[2].iString = "KAK Distribution";
  186. tbb[2].fsState = TBSTATE_ENABLED;
  187. tbb[2].fsStyle = TBSTYLE_BUTTON;
  188. tbb[2].idCommand = ID_MENU_KAKKEYDISTRIBUTION;
  189. tbb[3].iBitmap = "NULL";
  190. tbb[3].iString = "Full Encryption";
  191. tbb[3].fsState = TBSTATE_ENABLED;
  192. tbb[3].fsStyle = TBSTYLE_BUTTON;
  193. tbb[3].idCommand = ID_MENU_FULLSYMMETRICENCRYPTION;
  194.  
  195. SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);
  196. // Create Status bar
  197. hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL,
  198. WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0,
  199. hwnd, (HMENU)IDC_MAIN_STATUS, GetModuleHandle(NULL), NULL);
  200. SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
  201. SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"160285");
  202. }
  203. break;
  204. case WM_SIZE:
  205. {
  206. HWND hTool;
  207. RECT rcTool;
  208. int iToolHeight;
  209. HWND hStatus;
  210. RECT rcStatus;
  211. int iStatusHeight;
  212. HWND hMDI;
  213. int iMDIHeight;
  214. RECT rcClient;
  215. // Size toolbar and get height
  216. hTool = GetDlgItem(hwnd, IDC_MAIN_TOOL);
  217. SendMessage(hTool, TB_AUTOSIZE, 0, 0);
  218. GetWindowRect(hTool, &rcTool);
  219. iToolHeight = rcTool.bottom - rcTool.top;
  220. // Size status bar and get height
  221. hStatus = GetDlgItem(hwnd, IDC_MAIN_STATUS);
  222. SendMessage(hStatus, WM_SIZE, 0, 0);
  223. GetWindowRect(hStatus, &rcStatus);
  224. iStatusHeight = rcStatus.bottom - rcStatus.top;
  225. // Calculate remaining height and size edit
  226. GetClientRect(hwnd, &rcClient);
  227. iMDIHeight = rcClient.bottom - iToolHeight - iStatusHeight;
  228. hMDI = GetDlgItem(hwnd, IDC_MAIN_MDI);
  229. SetWindowPos(hMDI, NULL, 0, iToolHeight, rcClient.right, iMDIHeight, SWP_NOZORDER);
  230. }
  231. break;
  232. case WM_CLOSE:
  233. DestroyWindow(hwnd);
  234. break;
  235. case WM_DESTROY:
  236. PostQuitMessage(0);
  237. break;
  238. ////////////////////////////////
  239. ///////MAIN WINDOW CASES////////
  240. ////////////////////////////////
  241. case WM_COMMAND:
  242. switch(LOWORD(wParam))
  243. {
  244. ///////ABOUT CASE/////////////
  245. case ID_HELP_ABOUT:
  246. {
  247. int ret = DialogBox(GetModuleHandle(NULL),
  248. MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
  249. if(ret == -1){
  250. MessageBox(hwnd, "Dialog failed!", "Error",
  251. MB_OK | MB_ICONINFORMATION);
  252. }
  253. }
  254. break;
  255. ///////KEY GENERATION CASE/////////////
  256. case ID_MENU_KEYGENERATION:
  257. CreateNewMDIChildkey(g_hMDIClient);
  258. break;
  259. ///////CTAK KEY DISTRIBUTION CASE/////////////
  260. case ID_MENU_CTAKKEYDISTRIBUTION:
  261. CreateNewMDIChildctak(g_hMDIClient);
  262. break;
  263. ///////KAK KEY DISTRIBUTION CASE/////////////
  264. case ID_MENU_KAKKEYDISTRIBUTION:
  265. CreateNewMDIChildkak(g_hMDIClient);
  266. break;
  267. ///////FULL SYMMETRIC ENCRYPTION CASE/////////////
  268. case ID_MENU_FULLSYMMETRICENCRYPTION:
  269. CreateNewMDIChildcryp(g_hMDIClient);
  270. break;
  271. case ID_FILE_EXIT:
  272. PostMessage(hwnd, WM_CLOSE, 0, 0);
  273. break;
  274.  
  275. case ID_FILE_CLOSE:
  276. {
  277. HWND hChild = (HWND)SendMessage(g_hMDIClient, WM_MDIGETACTIVE,0,0);
  278. if(hChild)
  279. {
  280. SendMessage(hChild, WM_CLOSE, 0, 0);
  281. }
  282. }
  283. break;
  284. case ID_WINDOW_TILE:
  285. SendMessage(g_hMDIClient, WM_MDITILE, 0, 0);
  286. break;
  287. case ID_WINDOW_CASCADE:
  288. SendMessage(g_hMDIClient, WM_MDICASCADE, 0, 0);
  289. break;
  290. default:
  291. {
  292. if(LOWORD(wParam) >= ID_MDI_FIRSTCHILD)
  293. {
  294. DefFrameProc(hwnd, g_hMDIClient, WM_COMMAND, wParam, lParam);
  295. }
  296. else
  297. {
  298. HWND hChild = (HWND)SendMessage(g_hMDIClient, WM_MDIGETACTIVE,0,0);
  299. if(hChild)
  300. {
  301. SendMessage(hChild, WM_COMMAND, wParam, lParam);
  302. }
  303. }
  304. }
  305. }
  306. break;
  307. default:
  308. return DefFrameProc(hwnd, g_hMDIClient, msg, wParam, lParam);
  309. }
  310. return 0;
  311. }
  312. LRESULT CALLBACK MDIChildWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  313. {
  314. switch(msg)
  315. {
  316. case WM_CREATE:
  317. {
  318.  
  319. HFONT hfDefault;
  320. HWND hEdit;
  321. // Create Edit Control
  322. hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
  323. WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
  324. 0, 0, 100, 100, hwnd, (HMENU)IDC_CHILD_EDIT, GetModuleHandle(NULL), NULL);
  325. if(hEdit == NULL)
  326. MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
  327. hfDefault = GetStockObject(DEFAULT_GUI_FONT);
  328. SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
  329.  
  330. g_hbmBall = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BALL));
  331. }
  332. break;
  333. case WM_PAINT:
  334. {
  335. BITMAP bm;
  336. PAINTSTRUCT ps;
  337. HDC hdc = BeginPaint(hwnd, &ps);
  338. HDC hdcMem = CreateCompatibleDC(hdc);
  339. HBITMAP hbmOld = SelectObject(hdcMem, g_hbmBall);
  340. GetObject(g_hbmBall, sizeof(bm), &bm);
  341. BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
  342. SelectObject(hdcMem, hbmOld);
  343. DeleteDC(hdcMem);
  344. EndPaint(hwnd, &ps);
  345. }
  346. break;
  347. case WM_DESTROY:
  348. DeleteObject(g_hbmBall);
  349. PostQuitMessage(0);
  350. break;
  351. case WM_MDIACTIVATE:
  352. {
  353. HMENU hMenu, hFileMenu;
  354. UINT EnableFlag;
  355. hMenu = GetMenu(g_hMainWindow);
  356. if(hwnd == (HWND)lParam)
  357. { //being activated, enable the menus
  358. EnableFlag = MF_ENABLED;
  359. }
  360. EnableMenuItem(hMenu, 1, MF_BYPOSITION | EnableFlag);
  361. EnableMenuItem(hMenu, 2, MF_BYPOSITION | EnableFlag);
  362. hFileMenu = GetSubMenu(hMenu, 0);
  363. EnableMenuItem(hFileMenu, ID_FILE_SAVEAS, MF_BYCOMMAND | EnableFlag);
  364. EnableMenuItem(hFileMenu, ID_FILE_CLOSE, MF_BYCOMMAND | EnableFlag);
  365. EnableMenuItem(hFileMenu, ID_FILE_CLOSEALL, MF_BYCOMMAND | EnableFlag);
  366. DrawMenuBar(g_hMainWindow);
  367. }
  368. break;
  369. ///////WINDOW COMMANDS//////////
  370. case WM_COMMAND:
  371. switch(LOWORD(wParam))
  372. {
  373. ///////EXIT CASE/////////////
  374. case ID_FILE_EXIT:
  375. PostMessage(hwnd, WM_CLOSE, 0, 0);
  376. break;
  377. }
  378. break;
  379. ///////RESIZING THE WINDOW////////////
  380. case WM_SIZE:
  381. {
  382. HWND hEdit;
  383. RECT rcClient;
  384. // Calculate remaining height and size edit
  385. GetClientRect(hwnd, &rcClient);
  386. hEdit = GetDlgItem(hwnd, IDC_CHILD_EDIT);
  387. SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
  388. }
  389. return DefMDIChildProc(hwnd, msg, wParam, lParam);
  390. default:
  391. return DefMDIChildProc(hwnd, msg, wParam, lParam);
  392.  
  393. }
  394. return 0;
  395. }
  396. BOOL SetUpMDIChildWindowClass(HINSTANCE hInstance)
  397. {
  398. WNDCLASSEX wc;
  399. wc.cbSize = sizeof(WNDCLASSEX);
  400. wc.style = CS_HREDRAW | CS_VREDRAW;
  401. wc.lpfnWndProc = MDIChildWndProc;
  402. wc.cbClsExtra = 0;
  403. wc.cbWndExtra = 0;
  404. wc.hInstance = hInstance;
  405. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  406. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  407. wc.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);
  408. wc.lpszMenuName = NULL;
  409. wc.lpszClassName = g_szChildClassName;
  410. wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  411. if(!RegisterClassEx(&wc))
  412. {
  413. MessageBox(0, "Could Not Register Child Window", "Oh Oh...",
  414. MB_ICONEXCLAMATION | MB_OK);
  415. return FALSE;
  416. }
  417. else
  418. return TRUE;
  419. }
  420.  
  421. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  422. LPSTR lpCmdLine, int nCmdShow)
  423. {
  424. WNDCLASSEX wc;
  425. HWND hwnd;
  426. MSG Msg;
  427. InitCommonControls();
  428. wc.cbSize = sizeof(WNDCLASSEX);
  429. wc.style = 0;
  430. wc.lpfnWndProc = WndProc;
  431. wc.cbClsExtra = 0;
  432. wc.cbWndExtra = 0;
  433. wc.hInstance = hInstance;
  434. wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
  435. wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON, 16, 16, 0);
  436. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  437. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  438. wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINMENU);
  439. wc.lpszClassName = g_szClassName;
  440. wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  441. if(!RegisterClassEx(&wc))
  442. {
  443. MessageBox(NULL, "Window Registration Failed!", "Error!",
  444. MB_ICONEXCLAMATION | MB_OK);
  445. return 0;
  446. }
  447. if(!SetUpMDIChildWindowClass(hInstance))
  448. return 0;
  449. hwnd = CreateWindowEx(
  450. 0,
  451. g_szClassName,
  452. "The Symmetric Encryption Tutorial with CTAK & KAK",
  453. WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
  454. CW_USEDEFAULT, CW_USEDEFAULT, 480, 320,
  455. NULL, NULL, hInstance, NULL);
  456. if(hwnd == NULL)
  457. {
  458. MessageBox(NULL, "Window Creation Failed!", "Error!",
  459. MB_ICONEXCLAMATION | MB_OK);
  460. return 0;
  461. }
  462. g_hMainWindow = hwnd;
  463. ShowWindow(hwnd, nCmdShow);
  464. UpdateWindow(hwnd);
  465. while(GetMessage(&Msg, NULL, 0, 0) > 0)
  466. {
  467. if (!TranslateMDISysAccel(g_hMDIClient, &Msg))
  468. {
  469. TranslateMessage(&Msg);
  470. DispatchMessage(&Msg);
  471. }
  472. }
  473. return Msg.wParam;
  474. }

Any idea's?? any help will be gratefully received.
Reply With Quote Quick reply to this message  
Join Date: Apr 2004
Posts: 11
Reputation: keir.whitlock is an unknown quantity at this point 
Solved Threads: 0
keir.whitlock's Avatar
keir.whitlock keir.whitlock is offline Offline
Newbie Poster

Re: Displaying a different bitmap in different child windows? - win32 in C

 
0
  #2
Apr 12th, 2004
thanks to those who looked over my question, but i have solved it now.
Reply With Quote Quick reply to this message  
Join Date: Feb 2002
Posts: 12,027
Reputation: cscgal is a glorious beacon of light cscgal is a glorious beacon of light cscgal is a glorious beacon of light cscgal is a glorious beacon of light cscgal is a glorious beacon of light cscgal is a glorious beacon of light 
Solved Threads: 126
Administrator
Staff Writer
cscgal's Avatar
cscgal cscgal is online now Online
The Queen of DaniWeb

Re: Displaying a different bitmap in different child windows? - win32 in C

 
0
  #3
Apr 12th, 2004
Can you post your fix so that perhaps it might be able to help others in the future?
Dani the Computer Science Gal
Follow my Twitter feed! twitter.com/daniweb
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC