NSIS/Contrib/UIs/ui.c
wizou 752d7d239a Jim Park's Unicode NSIS merging - Step 1 : switch to TCHARs where relevant.
Compiler output is identical before & after this step

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/branches/wizou@6036 212acab6-be3b-0410-9dea-997c60f758d6
2010-03-24 17:22:56 +00:00

104 lines
2.5 KiB
C

// ui.cpp : Defines the entry point for the application.
//
// Unicode support by Jim Park -- 08/10/2007
#include <windows.h>
#include <commctrl.h>
#include "../ExDLL/nsis_tchar.h"
#include "resource.h"
HINSTANCE g_hInstance;
HWND m_curwnd;
TCHAR* windows[] = {
MAKEINTRESOURCE(IDD_LICENSE),
MAKEINTRESOURCE(IDD_SELCOM),
MAKEINTRESOURCE(IDD_DIR),
MAKEINTRESOURCE(IDD_INSTFILES),
MAKEINTRESOURCE(IDD_UNINST)
};
BOOL CALLBACK GenericProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) {
static LOGBRUSH b = {BS_SOLID, RGB(255,0,0), 0};
static HBRUSH red;
if (!red)
red = CreateBrushIndirect(&b);
switch (uMsg) {
case WM_CTLCOLORSTATIC:
return (int)red;
}
return 0;
}
BOOL CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) {
static int i = -1;
switch (uMsg) {
case WM_INITDIALOG:
SetWindowText(hwndDlg, _T("NSIS User Interface - Testing"));
SetWindowText(GetDlgItem(hwndDlg, IDC_VERSTR), _T("NSIS version"));
SetWindowText(GetDlgItem(hwndDlg, IDC_BACK), _T("< Back"));
SetWindowText(GetDlgItem(hwndDlg, IDOK), _T("Next >"));
SetWindowText(GetDlgItem(hwndDlg, IDCANCEL), _T("Cancel"));
ShowWindow(GetDlgItem(hwndDlg, IDC_BACK), SW_SHOW);
ShowWindow(GetDlgItem(hwndDlg, IDC_CHILDRECT), SW_SHOW);
SendMessage(hwndDlg, WM_COMMAND, MAKEWORD(IDOK, 0), 0);
ShowWindow(hwndDlg, SW_SHOW);
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
case IDC_BACK:
i+=(LOWORD(wParam)==IDOK)?1:-1;
if (i < 0) {
i++;
break;
}
if (i >= (int)sizeof(windows)/sizeof(TCHAR*)) {
i--;
break;
}
if (m_curwnd) DestroyWindow(m_curwnd);
m_curwnd=CreateDialog(g_hInstance,windows[i],hwndDlg,GenericProc);
if (m_curwnd)
{
RECT r;
GetWindowRect(GetDlgItem(hwndDlg,IDC_CHILDRECT),&r);
ScreenToClient(hwndDlg,(LPPOINT)&r);
SetWindowPos(m_curwnd,0,r.left,r.top,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER);
ShowWindow(m_curwnd,SW_SHOWNA);
}
break;
default:
EndDialog(hwndDlg, 0);
PostQuitMessage(0);
break;
}
break;
}
return 0;
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
InitCommonControls();
LoadLibrary(_T("RichEd32.dll"));
g_hInstance = GetModuleHandle(0);
DialogBox(
GetModuleHandle(0),
MAKEINTRESOURCE(IDD_INST),
0,
DialogProc
);
ExitProcess(0);
return 0;
}