Is there a way to change the icon in the title bar with a simple dialog based windows application?
Most likely, you haven't changed the icon with 16x16 pixel resolution. You need both 32x32 and 16x16 icons in the same file so that it will be displayed properly in various situations.
If you are using the IDE, modify the icon in the resource section. If you are using the command line without the IDE (such as using a makefile), you can still incorporate your own icon by performing the following:
1. Create an icon file with any icon editor (perhaps the one that came with your visual environment :-). In the icon file it should have a large icon (32x32 pixels) and a small icon (16x16 pixels). Let's call the file hello.ico.
2. Prepare a resource file with the following one line, let's call it hello.rc. 0 ICON hello.ico
3. Run the Win32 resource compiler: rc -r hello.rc This will generate a hello.res.
4. Link your console application with hello.res (using df, for example): df hello.f90 hello.res
5. Verify it with the Windows Explorer. The executable file should be displayed with the custom icon.
HTH, Greg Chien http://protodesign-inc.com
I probably was not clear in my posting. I don't mean the display of the icon in the explorer, but the display of the icon in the title bar when the application is running. I have got several applications that can be running simultaneously using optically the same interface. It would be nice for the users if they could see at a glance which interface they are looking at. An icon can help. I do have my own icons available in all possible sizes. In a windows SDI or MDI application I can use WNDCLASS, LoadIcon() or LoadImage() and REGISTERCLASS to display the application icon in the title bar, but I don't know how to achieve this in a simple dialog based application (not a console application) whose framework has been generated by the fortran windows application wizard.
You may want to see MS KB article Q179582 - HOWTO: Set the Title Bar Icon in a Dialog Box; the meat of which, in a CVF dialog app, could look something like
hIcon = LoadImage(ghInstance, %val(MAKEINTRESOURCE(IDI_TITLEBAR_ICON)), IMAGE_ICON, &
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0);
if(hIcon /= 0) then
hr = SendMessage(dlg%hWnd, WM_SETICON, ICON_SMALL, hIcon);
Thank you John, this works.
I added the lines as you suggested to the dialog call back routine under (callbacktype==dlg_init). Note that LoadImage needs "aliasing" if you use dflib, because it has been declared there too.
Can you not just create icons and give them ID's "FRAMEICON" and "CHILDICON", save them in files called, for example, FRAMEICON.ICO and CHILDICON.ICO and include them in the project which generates the application? It works for me.
Anthony, I have tried you method but without any succes. Your method probably only works for SDI and MDI windows applications. The method suggested by John Termine works OK also in a simple dialog based application. You can also use :
hIcon = LoadImage(ghInstance, %val(MAKEINTRESOURCE(IDI_ALTTAB_ICON)), IMAGE_ICON, &
GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), 0)
if(hIcon /= 0) then
hr = SendMessage(dlg%hWnd, WM_SETICON, ICON_BIG, hIcon)
This icon will be used when switching applications using Alt-TAB