Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

324 lines
7.9 KiB

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <stdio.h>
#include <stdlib.h>
#include "resource.h"
#include "dbg.h"
#include "ddbtn.h"
#include "../ptt/ptt.h"
char g_szClass[]="TestMain";
HINSTANCE g_hInst;
BOOL InitApplication(HINSTANCE hInst, LPSTR lpstrClass, WNDPROC lpfnWndProc)
{
return 0;
}
LPWSTR GetWText(HWND hwnd, INT wID)
{
CHAR szBuf[256];
static WCHAR wchBuf[512];
Edit_GetText(GetDlgItem(hwnd, wID), szBuf, sizeof(szBuf));
MultiByteToWideChar(CP_ACP,
MB_PRECOMPOSED,
szBuf, -1,
(WCHAR*)wchBuf, sizeof(wchBuf)/sizeof(WCHAR) );
return wchBuf;
}
INT GetINT(HWND hwnd, INT wID)
{
CHAR szBuf[32];
Edit_GetText(GetDlgItem(hwnd, wID), szBuf, sizeof(szBuf));
return atoi(szBuf);
}
typedef struct tagVALLIST {
INT wID;
INT lParam;
}VALLIST;
VALLIST slist[] = {
{ IDC_DDBS_TEXT, DDBS_TEXT },
{ IDC_DDBS_ICON, DDBS_ICON },
{ IDC_DDBS_THINEDGE, DDBS_THINEDGE },
{ IDC_DDBS_FLAT, DDBS_FLAT },
{ IDC_DDBS_NOSEPARATEDBUTTON, DDBS_NOSEPARATED},
};
typedef struct tagICONLIST {
INT wID;
INT lParam;
INT width;
INT height;
}ICONLIST;
ICONLIST iconList[]={
{ IDC_RADIO_ICON1, IDI_ICON1, 16, 16, },
{ IDC_RADIO_ICON2, IDI_ICON1, 32, 32, },
{ IDC_RADIO_ICON3, IDI_ICON2, 16, 16, },
{ IDC_RADIO_ICON4, IDI_ICON2, 32, 32, },
};
HWND MainCreateWindow(HINSTANCE hInst, HWND hwndOwner, LPSTR lpstrClass, LPVOID lpVoid)
{
HWND hwnd;
hwnd = CreateDialogParam(hInst,
g_szClass,
hwndOwner,
NULL,
(LPARAM)lpVoid);
if(!hwnd) {
return (HWND)NULL;
}
UpdateWindow(hwnd);
return hwnd;
}
#define ArrayCount(a) (sizeof(a)/sizeof(a[0]))
#define MAX(a, b) ( a > b ? a : b)
#define IDC_DDBID 4096
#define IDC_SWITCHVIEW 8888
HWND CreateSwitchViewButton(HINSTANCE hInst, HWND hwndParent, INT wID)
{
HWND hwnd = DDButton_CreateWindow(hInst,
hwndParent,
DDBS_ICON,
wID,
80,
30,
36,
24);
HICON hIcon = LoadImage(hInst,
MAKEINTRESOURCE(IDI_ICON2),
IMAGE_ICON,
16, 16,
LR_DEFAULTCOLOR);
DDButton_SetIcon(hwnd, hIcon);
DDBITEM ddbItem;
ZeroMemory(&ddbItem, sizeof(ddbItem));
ddbItem.cbSize = sizeof(ddbItem);
ddbItem.lpwstr = L"�Ú�ו\Ž¦";
DDButton_AddItem(hwnd, &ddbItem);
ddbItem.lpwstr = L"Šg‘å•\Ž¦";
DDButton_AddItem(hwnd, &ddbItem);
DDButton_SetCurSel(hwnd, 0);
return hwnd;
}
LRESULT CALLBACK MainWndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDC;
RECT rc;
static INT iIndex;
switch(uMsg) {
case WM_CREATE:
{
DDButton_CreateWindow(g_hInst, hwnd, DDBS_ICON,
IDC_DDBID,
20,
30,
36,
24);
CreateSwitchViewButton(g_hInst, hwnd, IDC_SWITCHVIEW);
}
SetTimer(hwnd, 0x9999, 50, NULL);
return 1;
case WM_TIMER:
{
KillTimer(hwnd, wParam);
INT i;
for(i = 0; i < sizeof(iconList)/sizeof(iconList[0]); i++) {
HICON hIcon = LoadImage(g_hInst,
MAKEINTRESOURCE(iconList[i].lParam),
IMAGE_ICON,
iconList[i].width,
iconList[i].height,
LR_DEFAULTCOLOR);
SendMessage(GetDlgItem(hwnd, iconList[i].wID),
BM_SETIMAGE,
(WPARAM)IMAGE_ICON,
(LPARAM)hIcon);
}
HWND hwndDDB = GetDlgItem(hwnd, IDC_DDBID);
for(i = 0; i < 23; i++) {
DDBITEM ddbItem;
WCHAR wchBuf[256];
ZeroMemory(&ddbItem, sizeof(ddbItem));
ddbItem.cbSize = sizeof(ddbItem);
ddbItem.lpwstr = wchBuf;
swprintf(wchBuf, L"Item %2d", i);
DDButton_AddItem(hwndDDB, &ddbItem);
}
}
break;
case WM_SYSCOMMAND:
if(wParam == SC_CLOSE) {
PostQuitMessage(0);
}
break;
case WM_COMMAND:
{
WORD wNotifyCode = HIWORD(wParam); // notification code
WORD wID = LOWORD(wParam); // item, control, or accelerator identifier
HWND hwndCtl = (HWND) lParam; // handle of control
HWND hwndDDB = GetDlgItem(hwnd, IDC_DDBID);
switch(wID) {
case IDC_DDBID:
{
switch(wNotifyCode) {
case DDBN_CLICKED:
DBG(("DDBN_CLICKED come\n"));
break;
case DDBN_SELCHANGE:
DBG(("DDBN_SELCHANGE come\n"));
break;
case DDBN_DROPDOWN:
DBG(("DDBN_DROPDOWN come\n"));
break;
case DDBN_CLOSEUP:
DBG(("DDBN_CLOSEUP come\n"));
break;
default:
DBG(("ERROR Unknown Notify\n"));
break;
}
}
break;
case IDC_ADDITEM:
{
DDBITEM ddbItem;
ZeroMemory(&ddbItem, sizeof(ddbItem));
ddbItem.cbSize = sizeof(ddbItem);
ddbItem.lpwstr = GetWText(hwnd, IDC_EDIT_ADDITEM);
DDButton_AddItem(hwndDDB, &ddbItem);
iIndex++;
}
break;
case IDC_INSERTITEM:
{
DDBITEM ddbItem;
INT index;
WCHAR wchItem[256];
ZeroMemory(&ddbItem, sizeof(ddbItem));
ddbItem.cbSize = sizeof(ddbItem);
ddbItem.lpwstr = GetWText(hwnd, IDC_EDIT_INSERTITEM);
index = GetINT(hwnd, IDC_EDIT_INSERTITEM_INDEX);
DDButton_InsertItem(hwndDDB, iIndex, &ddbItem);
}
break;
case IDC_GETCURSEL:
{
INT i;
char szBuf[256];
i = DDButton_GetCurSel(hwndDDB);
wsprintf(szBuf, "Cur Sel Index %d", i);
Static_SetText(GetDlgItem(hwnd, IDC_STATIC_GETCURSEL), szBuf);
}
break;
case IDC_SETTEXT:
{
DDButton_SetText(hwndDDB, GetWText(hwnd, IDC_EDIT_SETTEXT));
}
break;
case IDC_SETCURSEL:
{
DDButton_SetCurSel(hwndDDB, GetINT(hwnd, IDC_EDIT_SETCURSEL));
}
break;
case IDC_SETICON:
{
INT i;
for(i = 0; i < sizeof(iconList)/sizeof(iconList[0]); i++) {
if(Button_GetCheck(GetDlgItem(hwnd, iconList[i].wID))) {
HICON hIcon = LoadImage(g_hInst,
MAKEINTRESOURCE(iconList[i].lParam),
IMAGE_ICON,
iconList[i].width,
iconList[i].height,
LR_DEFAULTCOLOR);
DDButton_SetIcon(hwndDDB, hIcon);
}
}
}
break;
case IDC_SETSTYLE:
{
INT i;
DWORD dwStyle = 0;
for(i = 0; i < sizeof(slist)/sizeof(slist[0]); i++) {
INT ret = Button_GetCheck(GetDlgItem(hwnd, slist[i].wID));
if(ret) {
dwStyle |= slist[i].lParam;
}
}
DDButton_SetStyle(hwndDDB, dwStyle);
}
break;
}
}
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rc);
FillRect(hDC, &rc, (HBRUSH)(COLOR_3DFACE + 1));
EndPaint(hwnd, &ps);
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
HWND hwnd;
INT ret;
g_hInst = hInstance;
WNDCLASSEX wc;
ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW; /* Class style(s). */
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.cbClsExtra = 0; /* No per-class extra data.*/
wc.cbWndExtra = DLGWINDOWEXTRA; /* No per-window extra data. */
wc.hInstance = hInstance; /* Application that owns the class. */
wc.hIcon = NULL; //LoadIcon(hInstance, MAKEINTRESOURCE(SCROLL32_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //UGetStockObject(LTGRAY_BRUSH); //WHITE_BRUSH);
wc.lpszMenuName = NULL; //g_szClass; /* Name of menu resource in .RC file. */
wc.lpszClassName = g_szClass; /* Name used in call to CreateWindow. */
wc.hIconSm = NULL;
RegisterClassEx(&wc);
hwnd = CreateDialog(hInstance,
g_szClass,
0,
NULL);
UpdateWindow(hwnd);
ShowWindow(hwnd, SW_SHOW);
while (GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}