找回密码
 点一下
查看: 4136|回复: 18

很无聊的一个C++程序

[复制链接]
发表于 2007-8-11 19:00:20 | 显示全部楼层 |阅读模式
      说明没有
   最近开始研究Windows程序设计........
1.JPG
2.JPG
3.JPG

War3ColorerTest.rar

35 KB, 下载次数: 77

 楼主| 发表于 2007-8-11 19:01:07 | 显示全部楼层

源码

#include <windows.h>
#include <commdlg.h>
#include <stdlib.h>
#include <string.h>
#include "resource.h"

BOOL InitColorChoose(HWND hwnd);

static CHOOSECOLOR  cc;
static COLORREF     crCustColors[16];
static char   pstrBuffer[1000];
static int iLength;
static int rgb;
static char  rgbChar[6];
static HINSTANCE hInst;
static char temp[] = "|cFF";

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL    CALLBACK EditTextWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL    CALLBACK StaticTextWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL    CALLBACK AboutBoxProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
        static TCHAR szAppName[] = TEXT("War3ColorerTest");
        static HMENU hMenu;


        HWND hwnd;
        MSG msg;
        WNDCLASS wndclass;
        
        wndclass.style = CS_HREDRAW | CS_VREDRAW;
        wndclass.lpfnWndProc = WndProc;
        wndclass.cbClsExtra  = 0;
        wndclass.cbWndExtra = 0;
        wndclass.hInstance = hInstance;
        wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
        wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
        wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
        wndclass.lpszMenuName = NULL;
        wndclass.lpszClassName = szAppName;



        if (!RegisterClass (&wndclass))
        {
                MessageBox(NULL,TEXT("This program requires WindowsNY!"),szAppName,MB_ICONERROR);
                return 0;
        }
   
        hMenu = LoadMenu(hInstance,MAKEINTRESOURCE(ID_MENU));

        hwnd = CreateWindow(szAppName,
                                TEXT("War3Colorer"),
                                                WS_OVERLAPPED | WS_CAPTION  | WS_SYSMENU   |  WS_THICKFRAME | WS_MINIMIZEBOX,
                                                CW_USEDEFAULT,
                                                CW_USEDEFAULT,
                                                300,
                                                200,
                                                NULL,
                                                hMenu,
                                                hInstance,
                                                NULL);
        ShowWindow(hwnd,iCmdShow);
        UpdateWindow(hwnd);

        while (GetMessage(&msg,NULL,0,0))
        {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }
        return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message ,WPARAM wParam,LPARAM lParam)
{
        static int j;
        static HWND hwndButton;
        static int cxClient,cyClient;


        switch(message)
        {
        case WM_CREATE:
                hwndButton = CreateWindow(TEXT("Button"),TEXT("开始"),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,90,50,100,75,hwnd,(HMENU) 1,((LPCREATESTRUCT)lParam)->hInstance,NULL);
               hInst = ((LPCREATESTRUCT)lParam)->hInstance;
               LoadIcon(hInst,MAKEINTRESOURCE(ID_ICON));
               InvalidateRect(hwnd,NULL,TRUE);
            return 0;

        case WM_COMMAND:
                {
                 switch(LOWORD(wParam))
                 {
                 case 1:
                        {
             if (InitColorChoose(hwnd))
                            rgb = cc.rgbResult;

                    itoa(cc.rgbResult,rgbChar,16);
                    for (j = 0;j<=6;j++)
                           if (rgbChar[j] == NULL)
                              rgbChar[j] = '0';
                    DialogBox(hInst,TEXT("EditTextBox"),hwnd,EditTextWndProc);
                        break;
                        }

                 case 11:
                        DialogBox(hInst,TEXT("AboutBox"),hwnd,AboutBoxProc);
                        break;
                 }
                return 0;
                }

        case WM_SIZE:
                cxClient = LOWORD(lParam);  
                cyClient = HIWORD(lParam);
                  if (((cxClient > 300) || (cyClient > 200)  || (cxClient <300 || cyClient < 200)))  
                  {
                         MoveWindow(hwnd,GetSystemMetrics(SM_CXSCREEN)/2-200,GetSystemMetrics(SM_CYSCREEN)/2-200 ,300 ,200 ,TRUE);
                  }
                return 0;



    case WM_DESTROY:
                PostQuitMessage(0);
                return 0;

        }
        return DefWindowProc(hwnd,message,wParam,lParam);
}

BOOL InitColorChoose(HWND hwnd)
{
        cc.lStructSize   =  sizeof(CHOOSECOLOR);
        cc.hwndOwner     =  hwnd;
        cc.hInstance     =  NULL;
        cc.rgbResult     =  RGB(0x80,0x80,0x80);
        cc.lpCustColors  =  crCustColors;
        cc.Flags         =  CC_RGBINIT  |  CC_FULLOPEN;
        cc.lCustData     =  0;
        cc.lpfnHook      =  NULL;
        cc.lpTemplateName = NULL;
        
        return ChooseColor(&cc);
}

BOOL CALLBACK EditTextWndProc(HWND hDlgET,UINT message,WPARAM wParam,LPARAM lParam)
{
    char tempstr[] = "|r";
        static BOOL  iCheck;
        static int MB;

        switch(message)
        {
        case WM_INITDIALOG:
                {
                SetFocus(GetDlgItem(hDlgET,ID_EDITTEXT));
                return TRUE;
                }

        case WM_COMMAND:
                 switch(LOWORD(wParam))
                 {
                  case ID_OK:
                          iLength = GetWindowTextLength(GetDlgItem(hDlgET,ID_EDITTEXT));
                          GetWindowText(GetDlgItem(hDlgET,ID_EDITTEXT),pstrBuffer,iLength + 1);
                          strcat(temp,rgbChar);
                          strcat(temp,pstrBuffer);
                          strcat(temp,tempstr);
                          EndDialog(hDlgET,FALSE);
                          DialogBox(hInst,TEXT("StaticTextBox"),GetParent(hDlgET),StaticTextWndProc);
                        
                        return TRUE;

                case ID_CANCEL:
                        EndDialog(hDlgET,FALSE);
                        return TRUE;

                 }
                 break;
        }

        return FALSE;
}

BOOL  CALLBACK  StaticTextWndProc(HWND hDlgST,UINT message,WPARAM wParam,LPARAM lParam)
{
        int b;

        switch(message)
        {
        case WM_INITDIALOG:
                SetWindowText(GetDlgItem(hDlgST,10),temp);
                for(b=-1;b<=iLength+10;b++)
                        temp = NULL;
                strcpy(temp,"|cFF");
                return TRUE;

        case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                case IDOK:
                        SetWindowText(GetDlgItem(hDlgST,10)," ");
                        EndDialog(hDlgST,FALSE);
                        return TRUE;
                }
                break;
        }
        return FALSE;
}

BOOL CALLBACK AboutBoxProc(HWND hDlgA,UINT message,WPARAM wParam,LPARAM lParam)
{
        switch(message)
        {
        case WM_INITDIALOG:
                return TRUE;
               
        case WM_COMMAND:
                {
                EndDialog(hDlgA,FALSE);
                return TRUE;
                }
        break;
        }
        return FALSE;
}
回复

使用道具 举报

发表于 2007-8-11 19:13:04 | 显示全部楼层
..........
很无聊 , 很强大.............
回复

使用道具 举报

发表于 2007-8-12 23:57:33 | 显示全部楼层
什么年代了 还用SDK,,,,,,
回复

使用道具 举报

发表于 2007-8-13 03:51:23 | 显示全部楼层
偶就喜欢用SDK!
回复

使用道具 举报

发表于 2007-8-13 03:58:20 | 显示全部楼层
连SDK是什么都不知道的人飘过~~
回复

使用道具 举报

发表于 2007-8-14 12:03:36 | 显示全部楼层
源码居然那么长-_-||
回复

使用道具 举报

发表于 2007-8-14 13:37:09 | 显示全部楼层
引用第6楼xlandhenry于2007-08-14 12:03发表的  :
源码居然那么长-_-||
反正不是手写的,长点无所谓。
回复

使用道具 举报

 楼主| 发表于 2007-8-14 18:31:06 | 显示全部楼层
引用第7楼朱朱于2007-08-14 13:37发表的  :

反正不是手写的,长点无所谓。

不是手写的啥写的
回复

使用道具 举报

发表于 2007-8-14 23:57:06 | 显示全部楼层
SDK只有做游戏才用的着
回复

使用道具 举报

发表于 2007-8-15 01:03:10 | 显示全部楼层
引用第8楼darkfall于2007-08-14 18:31发表的  :


不是手写的啥写的
如果你不是用控件,那就是完全手写了。
回复

使用道具 举报

发表于 2007-8-15 01:07:31 | 显示全部楼层
呃。偶向来不看一个注释都米有的代码。
回复

使用道具 举报

发表于 2007-8-15 01:23:45 | 显示全部楼层
事实上,这其中有一部分素自动生成的。
回复

使用道具 举报

 楼主| 发表于 2007-8-15 13:35:25 | 显示全部楼层
事实上,除了主窗体创建那里都是手写的
回复

使用道具 举报

发表于 2007-8-19 23:50:35 | 显示全部楼层
只会复制的人路过..
回复

使用道具 举报

发表于 2007-12-15 09:49:14 | 显示全部楼层
这程序直接叫WIN32 C程序吧
没显示出任何C++的特征
GOOD~!,用C是万岁的~~
我最不想看到的是一大堆的类...
回复

使用道具 举报

发表于 2009-6-24 14:23:51 | 显示全部楼层
不是mfc开发自重啊……
回复

使用道具 举报

发表于 2009-6-24 17:37:38 | 显示全部楼层
MFC自重。
回复

使用道具 举报

发表于 2009-6-25 13:32:46 | 显示全部楼层
嘛。。那时候刚学嘛。。
渣书都是混在一起的
就弄到一起了
MFC自重。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 10:20 , Processed in 0.050731 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表