⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miniqq.c

📁 用minigui开发的miniQQ登陆程序
💻 C
字号:
//miniQQ程序
                      //minigui版本号1.6.10
                      //qvfb版本1.1
       //作者:qqq

#include<stdio.h>
#include<minigui/common.h>
#include<minigui/minigui.h>
#include<minigui/gdi.h>
#include<minigui/window.h>
#include<minigui/control.h>

#define IDC_BUTTON_0 100
#define IDC_BUTTON_1 101
#define IDC_BUTTON_2 102
#define IDC_BUTTON_3 103

#define IDC_CHECKBOX_0 200
#define IDC_CHECKBOX_1 201
#define IDC_CHECKBOX_2 202

#define IDC_TEXT_0 300
#define IDC_TEXT_1 301
#define IDC_TEXT_2 302
#define IDC_TEXT_3 303
#define IDC_TEXT_4 304

#define IDC_EDIT_0 400
#define IDC_EDIT_1 401
#define IDC_EDIT_2 402
#define IDC_EDIT_3 403
#define IDC_EDIT_4 404

#define IDC_LISTBOX_0 500


//-------------------对话框代码
static DLGTEMPLATE DlgInitProgress = {
WS_BORDER | WS_CAPTION,
WS_EX_NONE,
0,0,320,240,
"个人信息",
0,0,
3,NULL,
0
};


static CTRLDATA CtrlInitProgress[] =
{
{
      CTRL_STATIC,
      WS_VISIBLE | SS_SIMPLE,
      50,50,250,30,
      IDC_TEXT_4,
      "欢迎到我的BLOG做客:",
      0
},
{
      CTRL_STATIC,
      WS_VISIBLE | SS_SIMPLE,
      50,80,250,30,
      IDC_TEXT_4,
      "http://blog.sina.com.cn/u/1180215917",
      0
},
{
      CTRL_BUTTON,
      WS_TABSTOP | WS_VISIBLE | BS_DEFPUSHBUTTON,
      120,150,80,30,
      IDOK,
      "关闭",
      0
}
};


static int InitDialogBoxProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
switch(message){
case MSG_INITDIALOG:
      return 1;
case MSG_COMMAND:
      switch(wParam){
      case IDOK:
       EndDialog(hDlg, wParam);
       break;
      }
      return 0;
case MSG_CLOSE:
      EndDialog(hDlg, wParam);
      return 0;
}
return DefaultDialogProc(hDlg, message, wParam, lParam);
}

static int OpenDialogBox(HWND hWnd)
{
DlgInitProgress.controls = CtrlInitProgress;
DialogBoxIndirectParam(&DlgInitProgress, hWnd, InitDialogBoxProc, 0L);
}

//-------------------------交谈信息对话框
static int MessageSendProc(HWND hWnd, int id, int nc, DWORD add_data)
{
switch(nc){
case BN_CLICKED:{
      char buffer[256];
      char *p;
      p = (char *)malloc(1024);
      GetWindowText(GetDlgItem(GetParent(hWnd), IDC_EDIT_2), p, 1024);
      GetWindowText(GetDlgItem(GetParent(hWnd), IDC_EDIT_3), buffer, 255);
      strcat(p, buffer);
      SetWindowText(GetDlgItem(GetParent(hWnd), IDC_EDIT_2), p);
      free(p);
      return 0;
}
return 0;
}
}

static int MessageWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
static int MessageSendProc();
switch(message){
case MSG_CREATE:
      CreateWindow(CTRL_MLEDIT,
        "",
        WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOWRAP | WS_VSCROLL,
        IDC_EDIT_2,
        10,10,350,200,hWnd,0);
      SendMessage(GetDlgItem(hWnd, IDC_EDIT_2), EM_SETREADONLY, TRUE, 0);

      CreateWindow(CTRL_EDIT,
        "",
        WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOWRAP,
        IDC_EDIT_3,
        10,220,350,100,hWnd,0);

      CreateWindow(CTRL_BUTTON,
        "发送",
        WS_CHILD | WS_VISIBLE,
        IDC_BUTTON_1,
        370,220,70,45,hWnd,0);
 
      CreateWindow(CTRL_BUTTON,
        "关闭",
        WS_CHILD | WS_VISIBLE,
        IDC_BUTTON_2,
        370,275,70,45,hWnd,0);

      SetNotificationCallback(GetDlgItem(hWnd, IDC_BUTTON_1), MessageSendProc); 
      printf("The MessageWin has been opened!\n");
      return 0;

case MSG_COMMAND:{
      int id = LOWORD(wParam);
      int code = HIWORD(wParam);
      switch(id){
      case IDC_BUTTON_2:
       if(code == BN_CLICKED)
        SendMessage(hWnd, MSG_CLOSE, 0, 0);
      }
      return 0;
}

case MSG_DESTROY:
      DestroyAllControls(hWnd);
      printf("The MessageWin has been destroyed!\n");
      return 0;

case MSG_CLOSE:
      DestroyMainWindow(hWnd);
      MainWindowCleanup(hWnd);
      printf("The MessageWin has been closed!\n");
      return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

int CreateMessageWin(HWND hWnd, char* friendName){
 HWND hMsgWnd;
 MAINWINCREATE CreateInfo;

 CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
 CreateInfo.dwExStyle = WS_EX_NONE;
 CreateInfo.spCaption = friendName;
 CreateInfo.hMenu = 0;
 CreateInfo.hCursor = GetSystemCursor(0);
 CreateInfo.hIcon = 0;
 CreateInfo.MainWindowProc = MessageWinProc;
 CreateInfo.lx = 0;
 CreateInfo.ty = 0;
 CreateInfo.rx = 450;
 CreateInfo.by = 350;
 CreateInfo.iBkColor = COLOR_lightwhite;
 CreateInfo.dwAddData = 0;
 CreateInfo.hHosting = hWnd;

 hMsgWnd = CreateMainWindow(&CreateInfo);
 if(hMsgWnd==HWND_INVALID)
    return -1;
 ShowWindow(hMsgWnd, SW_SHOWNORMAL);
 return 0;
}


//------------------qq面板代码
static int QQWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
static int MessageWin();
static HWND hListBox;

switch(message){
case MSG_CREATE:{
      HWND hListBox;
      hListBox = CreateWindow(CTRL_LISTBOX,
         "FriendsList",
         WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | LBS_SORT | LBS_NOTIFY | LBS_USEICON,
         IDC_LISTBOX_0,
         10,10,160,350,hWnd,0);

      LISTBOXITEMINFO lbii;
      lbii.hIcon = GetSmallSystemIcon(4);
      lbii.cmFlag = CMFLAG_BLANK;
      lbii.string = "qqq";
      SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)&lbii);
  printf("create hlistbox\n");
      CreateWindow(CTRL_BUTTON,
        "个人设置",
        WS_CHILD | WS_VISIBLE,
        IDC_BUTTON_3,
        10,370,160,30,hWnd,0);

      printf("The QQWin has been opened!\n");

      return 0;
}

case MSG_COMMAND:{
      int id = LOWORD(wParam);
      int code = HIWORD(wParam);
      switch(id){
      case IDC_LISTBOX_0:
       if(code == LBN_DBLCLK){
        hListBox = GetDlgItem(hWnd, IDC_LISTBOX_0);
        int index;
        char buffer[20];
        index = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
        SendMessage(hListBox, LB_GETTEXT, index, (LPARAM)buffer);
  printf("go to message\n");
        CreateMessageWin(hWnd, (char *)buffer);
       }
      case IDC_BUTTON_3:
       if(code == BN_CLICKED)
        OpenDialogBox(hWnd);
  printf("2222\n");
      }
      return 0;
}

case MSG_DESTROY:
  printf("destory\n");
      DestroyAllControls(hWnd);
      return 0;

case MSG_CLOSE:
 
      DestroyMainWindow(hWnd);
      PostQuitMessage(hWnd);
   printf("close\n");
      return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

int CreateQQWin(){
 MSG Msg;
 HWND hQQWnd;
 MAINWINCREATE CreateInfo;

 CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
 CreateInfo.dwExStyle = WS_EX_NONE;
 CreateInfo.spCaption = "MiniQQ -********";
 CreateInfo.hMenu = 0;
 CreateInfo.hCursor = GetSystemCursor(0);
 CreateInfo.hIcon = 0;
 CreateInfo.MainWindowProc = QQWinProc;
 CreateInfo.lx = 0;
 CreateInfo.ty = 0;
 CreateInfo.rx = 180;
 CreateInfo.by = 450;
 CreateInfo.iBkColor = COLOR_lightwhite;
 CreateInfo.dwAddData = 0;
 CreateInfo.hHosting = HWND_DESKTOP;

 hQQWnd = CreateMainWindow(&CreateInfo);
 if(hQQWnd==HWND_INVALID)
  return -1;
 ShowWindow(hQQWnd, SW_SHOWNORMAL);
 printf(GetMessage(&Msg, hQQWnd));
 //printf("\n");
 while(GetMessage(&Msg, hQQWnd)){
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
  printf("translate message\n");
 }
 MainWindowThreadCleanup(hQQWnd);
 printf("The QQWin has been closed!\n");
 return 0;
}

//-------------------登陆对话框代码
int LoginWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){
 char *str1 = (char *)GetWindowAdditionalData(hWnd);

switch(message){
case MSG_CREATE:
      CreateWindow(CTRL_STATIC,
        str1,
        WS_CHILD | WS_VISIBLE,
        IDC_TEXT_0,
        10,10,220,20,hWnd,0);

      CreateWindow(CTRL_STATIC,
        "QQ账号:",
        WS_CHILD | WS_VISIBLE,
        IDC_TEXT_1,
        50,50,80,20,hWnd,0);

      CreateWindow(CTRL_EDIT,
        "",
        WS_CHILD | WS_BORDER | WS_VISIBLE,
        IDC_EDIT_0,
        130,50,100,20,hWnd,0);

      CreateWindow(CTRL_STATIC,
        "QQ密码:",
        WS_CHILD | WS_VISIBLE,
        IDC_TEXT_2,
        50,80,80,20,hWnd,0);

      CreateWindow(CTRL_EDIT,
        "",
        WS_CHILD | WS_BORDER | WS_VISIBLE | ES_PASSWORD,
        IDC_EDIT_1,
        130,80,100,20,hWnd,0);

      CreateWindow(CTRL_BUTTON,
        "登陆",
        WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE,
        IDC_BUTTON_0,
        100,160,80,30,hWnd,0);

      CreateWindow(CTRL_BUTTON,
        "自动登录",
        WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE,
        IDC_CHECKBOX_0,
        50,120,100,30,hWnd,0);

      CreateWindow(CTRL_BUTTON,
        "隐身",
        WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE,
        IDC_CHECKBOX_1,
        180,120,100,30,hWnd,0);

      printf("The MainWin has been opened!\n");

      return 0;

case MSG_COMMAND:{
      int id = LOWORD(wParam);
      int code = HIWORD(wParam);
      switch(id){
      case IDC_BUTTON_0:
       if(code == BN_CLICKED){
        SendMessage(hWnd, MSG_CLOSE, 0, 0);
        CreateQQWin();
       }
      }
      return 0;
}
case MSG_DESTROY:
      DestroyAllControls(hWnd);
      return 0;

case MSG_CLOSE:
      DestroyMainWindow(hWnd);
      PostQuitMessage(hWnd);
      return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

int CreateLogin(){
 MSG Msg;
 HWND hMainWnd;
 MAINWINCREATE CreateInfo;

 char *p="这是个QQ仿真界面";
 
 CreateInfo.dwStyle=WS_VISIBLE | WS_BORDER | WS_CAPTION;
 CreateInfo.dwExStyle=WS_EX_NONE;
 CreateInfo.spCaption="MiniQQ";
 CreateInfo.hMenu=0;
 CreateInfo.hCursor=GetSystemCursor(0);
 CreateInfo.hIcon=0;
 CreateInfo.MainWindowProc=LoginWinProc;
 CreateInfo.lx=0;
 CreateInfo.ty=0;
 CreateInfo.rx=320;
 CreateInfo.by=240;
 CreateInfo.iBkColor = COLOR_lightwhite;
 CreateInfo.dwAddData = p;
 CreateInfo.hHosting = HWND_DESKTOP;

 hMainWnd=CreateMainWindow(&CreateInfo);
 if(hMainWnd==HWND_INVALID)
  return -1;
 ShowWindow(hMainWnd,SW_SHOWNORMAL);
 while(GetMessage(&Msg,hMainWnd)){
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
 }
 MainWindowThreadCleanup(hMainWnd);
 printf("The MainWin has been close");
 return 0;
}

//---------------主函数
int MiniGUIMain(int argc,const char *argv[]){

#ifdef _MGRM_PROCESSES
    JoinLayer(NAME_DEF_LAYER , "QQWindow" , 0 , 0);
#endif
 CreateLogin();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -