Dave's Brain

Browse - Programming Tips - How can I make a win32/win64 application that has a dialog as the main

Date: 2014aug28
OS: Windows
Keywords: dialog, based

Q.  How can I make a win32/win64 application that has a dialog as the main
window?

A.  You can NOT just do:

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // WRONG WRONG WRONG! DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), 0, DialogProc); }
You need to do this:
#include "stdafx.h" #include <Windows.h> #include <CommCtrl.h> #include <tchar.h> #include "resource.h" #pragma comment(linker, \ "\"/manifestdependency:type='Win32' "\ "name='Microsoft.Windows.Common-Controls' "\ "version='6.0.0.0' "\ "processorArchitecture='*' "\ "publicKeyToken='6595b64144ccf1df' "\ "language='*'\"") #pragma comment(lib, "ComCtl32.lib") static HINSTANCE ghInstance = NULL; static void SetIcons(HWND hDlg) { const HICON hIconSmall = LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_SMALL)); SendMessage(hDlg, WM_SETICON, WPARAM(ICON_SMALL), LPARAM(hIconSmall)); const HICON hIconBig = LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_MYAPP)); SendMessage(hDlg, WM_SETICON, WPARAM(ICON_BIG), LPARAM(hIconBig)); } INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: SetIcons(hDlg); return TRUE; case WM_CLOSE: DestroyWindow(hDlg); return TRUE; case WM_DESTROY: PostQuitMessage(0); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: SendMessage(hDlg, WM_CLOSE, 0, 0); return TRUE; } break; } return FALSE; } int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HWND hDlg; MSG msg; BOOL ret; ghInstance = hInstance; InitCommonControls(); hDlg = CreateDialogParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), 0, DialogProc, 0); ShowWindow(hDlg, nCmdShow); while ((ret = GetMessage(&msg, 0, 0, 0)) != 0) { if (ret == -1) { return -1; } if (!IsDialogMessage(hDlg, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; }

Add a comment

Sign in to add a comment
Copyright © 2008-2017, dave - Code samples on Dave's Brain is licensed under the Creative Commons Attribution 2.5 License. However other material, including English text has all rights reserved.