win32 调用窗体 实现代码
2015-08-18 16:07
393 查看
// Function.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "resource.h"
#include <dbt.h>
#include "src/server.h" //添加类头文件
#include "src/client.h"
HINSTANCE hInstance=NULL; //main handle 窗体句柄
LocalClient t_server;
WebServer t_Web;
#ifndef _DEBUG
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") //隐藏win32窗体
#endif
BOOL CALLBACK WinProc(HWND hwndDlg, //回调函数
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hMutex;
hMutex=CreateMutexA(NULL,TRUE,"Apps"); //判断程序是否已经打开
if(hMutex)
{
if(ERROR_ALREADY_EXISTS==GetLastError())
{
MessageBoxA( NULL, "程序已经启动!", NULL, NULL);
return 0;
}
}
if(argc == 2) //开机启动
{
Sleep(10000);
char t_Path[256] = {0};
strcpy(t_Path, GetCommandLine()); //获取应用程序路径
int i = 0;
for(; t_Path[i] != 0; i++);
for(; t_Path[i] != '\\'; i--);
t_Path[i] = 0;
strcpy(t_Web.m_Local.pPathName, &t_Path[1]);
}
else
GetCurrentDirectory( MAX_PATH, t_Web.m_Local.pPathName); //获取应用程序路径
DialogBoxA(hInstance,(LPCSTR)IDD_DIALOG1,NULL,WinProc, 1); //调用对话框IDD_DLALOG1, 此时需要定义回调函数WinProc,
return 0;
}
//窗体回调函数实现
BOOL CALLBACK WinProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG: //初始化
{
t_server.m_Basic.m_hWnd = hwndDlg;
t_server.m_Basic.pWnd = CWnd::FromHandle(hwndDlg);
//make icon
t_server.m_Basic.pWnd->SetIcon(LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)), false);
t_server.m_Basic.pWnd->SetIcon(LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)), true);
}break;
case WM_MOUSEMOVE:
{
}break;
case WM_LBUTTONDOWN:
{
}break;
case WM_PAINT: //播放后重绘
case WM_NCACTIVATE: //窗体切换后重绘
{
}break;
case WM_HOTKEY: //热键
case WM_COMMAND:
{
}break;
case MYWM_NOTIFYICON: //自定义消息
{
}break;
case WM_KEYDOWN:
{
}break;
case WM_CLOSE:
{
exit(0);
}break;
case WM_DEVICECHANGE: //usb 拔插监测
{
return TRUE;
}
default:
{
}
break;
}
return FALSE;
}
//
#include "stdafx.h"
#include "resource.h"
#include <dbt.h>
#include "src/server.h" //添加类头文件
#include "src/client.h"
HINSTANCE hInstance=NULL; //main handle 窗体句柄
LocalClient t_server;
WebServer t_Web;
#ifndef _DEBUG
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") //隐藏win32窗体
#endif
BOOL CALLBACK WinProc(HWND hwndDlg, //回调函数
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hMutex;
hMutex=CreateMutexA(NULL,TRUE,"Apps"); //判断程序是否已经打开
if(hMutex)
{
if(ERROR_ALREADY_EXISTS==GetLastError())
{
MessageBoxA( NULL, "程序已经启动!", NULL, NULL);
return 0;
}
}
if(argc == 2) //开机启动
{
Sleep(10000);
char t_Path[256] = {0};
strcpy(t_Path, GetCommandLine()); //获取应用程序路径
int i = 0;
for(; t_Path[i] != 0; i++);
for(; t_Path[i] != '\\'; i--);
t_Path[i] = 0;
strcpy(t_Web.m_Local.pPathName, &t_Path[1]);
}
else
GetCurrentDirectory( MAX_PATH, t_Web.m_Local.pPathName); //获取应用程序路径
DialogBoxA(hInstance,(LPCSTR)IDD_DIALOG1,NULL,WinProc, 1); //调用对话框IDD_DLALOG1, 此时需要定义回调函数WinProc,
return 0;
}
//窗体回调函数实现
BOOL CALLBACK WinProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG: //初始化
{
t_server.m_Basic.m_hWnd = hwndDlg;
t_server.m_Basic.pWnd = CWnd::FromHandle(hwndDlg);
//make icon
t_server.m_Basic.pWnd->SetIcon(LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)), false);
t_server.m_Basic.pWnd->SetIcon(LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)), true);
}break;
case WM_MOUSEMOVE:
{
}break;
case WM_LBUTTONDOWN:
{
}break;
case WM_PAINT: //播放后重绘
case WM_NCACTIVATE: //窗体切换后重绘
{
}break;
case WM_HOTKEY: //热键
case WM_COMMAND:
{
}break;
case MYWM_NOTIFYICON: //自定义消息
{
}break;
case WM_KEYDOWN:
{
}break;
case WM_CLOSE:
{
exit(0);
}break;
case WM_DEVICECHANGE: //usb 拔插监测
{
return TRUE;
}
default:
{
}
break;
}
return FALSE;
}
相关文章推荐
- php 压缩服务器上的文件为zip 和下载zip文件
- java定时器的写法
- openCV—Python(10)—— 图像阈值化处理
- MyEclipse 快捷键
- C++中extern关键字使用(转)
- Eclipse的Activiti-designer插件安装
- 深入探究PHP的多进程编程方法
- 转:Spring使用静态工厂方法创建Bean
- C++实现系统服务暂停、停止、启动
- Spring Mvc集合的传值
- Java Web文件下载1——文件下载实现和乱码处理(转载)
- struts2中s:iterator的使用(2个list嵌套循环)
- 编码规范:Eclipse Code Templates设置
- C++stl map学习
- Java GC 日志详解
- Head First Python 学习笔记-Chapter3:文件读取和异常处理
- 代码生成,大大简化您的工作
- C++模板实现泛型队列
- Entity Framework 5.0系列之自动生成Code First代码
- IOS开发系列--C语言之基础知识