子级分类:
VCer代码
VCer开源
VCer工具
VCer知道
VCer词典
VCer读书
VCer文章
VCer论坛
 |
实现Dialog的Menu中最近使用文件机制
|
|
| |
| l 如何启动Dialog的Command Update机制?
重载Cdialog的WM_INITMENUPOPUP, 修改使用 void CFrameWnd::OnInitMenuPopup (CMenu* pMenu, UINT, BOOL bSysMenu)
中的source code,启动Command Update机制
l 如何实现Dialog的Menu中最近使用文件机制?
最近使用文件机制是用CWinApp的Command Update机制和以下两个消息处理的:
ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu)
ON_COMMAND_EX_RANGE(ID_FILE_MRU_FILE1,ID_FILE_MRU_FILE16, OnOpenRecentFile)
void CWinApp::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
ASSERT_VALID(this);
if (m_pRecentFileList == NULL) // no MRU files
pCmdUI->Enable(FALSE);
...
|
|
| 作者:不祥 jerry张贴于2004-05-11 20:37:18.0,共阅读2489次,回复0次 |
|
|
 |
BBS联赛作品A5003
|
|
| |
| 部分代码,只展示作者的编码风格:
A4.
// TicketTest.cpp: implementation of the TicketTest class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "AlgorithmTest.h"
#include "TicketTest.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TicketTest::TicketTest()
: m_dwMaxM(0)
, m_biAllData(NULL)
{
}
TicketTest::~Ti ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 02:29:48.0,共阅读2743次,回复5次 |
|
|
 |
两种关机代码的比较
|
|
| |
| InitiateSystemShutdown(NULL,"关机",10,TRUE,FALSE) //这个函数不能直接掐断电源,但是可以cancel掉关机指令
ExitWindowsEx(EWX_POWEROFF | EWX_FORCE ,0) //直接强制关机,掐断电源
|
|
| 作者:不祥 xler张贴于2004-05-11 18:03:37.0,共阅读1945次,回复0次 |
|
|
 |
系统关机代码
|
|
| |
| BOOL ShutDown()
{
OSVERSIONINFO osVI;
HANDLE hToken=NULL;
osVI.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if(GetVersionEx(&osVI))
{
switch(osVI.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
case VER_PLATFORM_WIN32_WINDOWS:
ExitWindowsEx(EWX_POWEROFF,0);
break;
case VER_PLATFORM_WIN32_NT:
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES, &hToken))
{
SetPrivilege(hToken,SE_SHUTDOWN_NAME,TRUE);
if(!ExitWindowsEx(EWX_ ...
|
|
| 作者:不祥 xler张贴于2004-05-11 18:01:29.0,共阅读2366次,回复0次 |
|
|
 |
系统重起代码
|
|
| |
| HINSTANCE hShell32 = ::LoadLibrary("shell32.dll");
if(hShell32)
{
typedef int (WINAPI *RestartDialog)(HWND hwndOwner,LPCSTR lpstrReason,UINT uFlags);
RestartDialog SHRestartWindowsDialog =(RestartDialog)GetProcAddress(hShell32, MAKEINTRESOURCE(59));
if(SHRestartWindowsDialog)
{
(SHRestartWindowsDialog)(GetDesktopWindow(),NULL,EWX_REBOOT);
}
}
|
|
| 作者:不祥 xler张贴于2004-05-11 17:47:30.0,共阅读2238次,回复0次 |
|
|
 |
win2000锁定屏幕调用代码
|
|
| |
| 对于其他os,不知道有没有用WinExec("rundll32.exe user32.dll,LockWorkStation",SW_HIDE);
|
|
| 作者:不祥 xler张贴于2004-05-11 17:37:05.0,共阅读2189次,回复0次 |
|
|
 |
如何实现双击程序托盘图标弹出或者弹入动画效果
|
|
| |
| 使用API:
BOOL WINAPI DrawAnimatedRects(HWND hwnd, int idAni, CONST RECT * lprcFrom, CONST RECT * lprcTo);
Eg:
Bool m_bShow = false; //区分弹出还是弹入
BOOL WinAnimation()
{
CWnd * pWnd=FindWindow("Shell_TrayWnd",NULL); //windows底部信息提示窗口
if(!pWnd)return FALSE;
CRect rectSur,rectDst;
GetWindowRect(&rectSur); //本窗口大小,用户自己处理
EnumChildWindows(pWnd->GetSafeHwnd(),My_Find,(LPARAM)&rectDst); //寻找托盘
if(m_bShow)DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,&rectSur,&rectDst); //弹入
else DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,&rectDst,&rectSur); //弹出
re ...
|
|
| 作者:不祥 xler张贴于2004-05-11 14:47:50.0,共阅读2340次,回复0次 |
|
|
 |
一点小建议
|
|
| |
| 在上传咚咚的时候,网页现在显示的是“正在上传,请稍候...”,如果能够改变i点点就好了,如果能够在别人上传得时候显示进度的话,那就更好了,因为对于网速慢的网友,别人不知道到底是死住了还是因为网速问题,呵呵,总之现在上传得时候如果网速慢了看上去就像死住了一样
|
|
| 作者:不祥 Boyben张贴于2004-05-09 19:21:00.0,共阅读1826次,回复3次 |
|
|
 |
在MFC中嵌入Word
|
|
| |
| 一、引言
Microsoft Office办公套件以其功能强大、方便实用而被广泛使用。我们可以使用自动化作为Word用以把其功能显露给其他应用的方式,采用这种方式可以尽可能少的占用自动化客户的资源,并且不需要被访问对象的类型信息就可以进行调用。
二、创建工程
以下是创建这个MFC应用程序的步骤:
(1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"Embed_Word"
(2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持。 其它都为默认。在ClassView中将产生如下类:
应用类: CEmbed_WordApp in Embed_Word.h and Embed_Word.cpp
框架类: CMainFrame in MainFrm.h and MainFrm.cpp
文档类: CEmbed_WordDoc in Embed_WordDoc.h and Embed_WordDoc.cpp
视图类: CEmbed_WordView in Embed_WordView.h and Embed_WordView.cpp
容器类: CEmbed_WordCntrItem in CntrItem.h and CntrItem.cpp
(3)在View菜单中 ...
|
|
| 作者:不祥 Boyben张贴于2004-05-09 10:51:01.0,共阅读2640次,回复0次 |
|
|
 |
BBS联赛作品A2003
|
|
| |
| #include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
#define MAXN 222
int a[MAXN][MAXN],b[MAXN];
int N;
int c;
void init()
{
FILE *input;
int i,j;
if((input=fopen("schedule.in","r"))==NULL)
{
cout<<"Error in open input file!"<<endl;
exit(0);
}
fscanf(input,"%d",&N);
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
a[i][j]=0;
while(!feof(input))
{
fscanf(input,"%d%d",&i,&j);
a[i][j]=1;
}
fclose(input);
}
void work()
{
int i,j;
int l[MAXN];
bool bo=true;
for(i=1;i<=N;i++)
b[i]=0;
while(bo)
{
}
}
void outanswer()
{
int i ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-08 21:06:52.0,共阅读2298次,回复0次 |
|
|
 |
BBS联赛作品A5000
|
|
| |
| A1.
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int *policeman(int *in,int maxline);
int *readdata(int *maxline);
void writedata(int *out);
void main()
{
int *xx,*yy,maxline;
xx=readdata(&maxline); //读入数据(第一个数为总人数,依次后推)
yy=policeman(xx,maxline); //处理数据
writedata(yy); //写入数据(第一个数为总人数,依次后推)
getch();
}
int *policeman(int *in,int maxline)
{
int min,*man,i,j,k=0;
int *out,flag,man1,man2;
out=(int*)malloc((in[0]+2)/2*sizeof(int));
man=(int*)malloc((in[0]+1)*sizeof(int));
memset((void*)out,0,(in[0]+2)/2*sizeof(int));
while( ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 03:29:02.0,共阅读2116次,回复0次 |
|
|
 |
BBS联赛作品A5010
|
|
| |
| A1.
算法说明:
1、定义一个结构类型team,代表一组警卫;结构成员为两个整形数i和j,由警卫的编号组成。
2、定义一个结构类型为team的数组men[]来记录可搭档的每组警卫的编号。
3、以字符格式输入,有字符型数组num[]接收,首先接收第一个警卫的编号字符,遇到空格符后,接收第二个警卫的编号字符;遇到回车后,接收下一组警卫的编号。(由标志flag来确定)
4、由函数change()和chartonum()将num[]中的字符转换为数字,存入men[]中的各个成员变量中;
5、由函数line()使用“字典序法”对各组的“检查计算的顺序”进行排序。
6、当排好一次序时,就进行一次计算分析,有函数plan()完成,返回这次能够成功安排值班工作的最大组数;循环计算各次的结果。
7、比较记录下最大组数maxnum和相关的各组q_max[];然后输出。
#include "stdio.h"
#include "string.h"
struct team // 一组警卫的结构
{
int i;
int j;
};
void line(struct team *men, int m, int n); // 组合排序
int rank(int m); // 求m!
int plan(struct team *men, int queue[] ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 03:13:21.0,共阅读2199次,回复0次 |
|
|
 |
BBS联赛作品A5009
|
|
| |
| A2.
/*
========================
A2.跳房子游戏
------------------------
背景:
小时候有玩过跳房子的游戏吗?就是那种在街道上用粉笔画出一些格子,然后在格子间跳
来跳去(有时单脚,有时双脚)或是从格子中检起小石块。现在长大了,来点不一样的跳
房子游戏吧!有一个n*n的格子矩阵,每个格子中放有0到100元不等的钱。参赛者一开始站
在(0,0)的位置(也就是左上角的位置),他每次最多可以跳k格(当然,不能跳出格子
矩阵外),横的方向或直的方向都可以。他每到一个格子,就把那格子中的钱收起来,但
是有一个条件,就是他要跳的下一个格子中的钱一定要比现在所在的格子中的钱来的多。
问题:
给你n, k以及各格子中的钱的大小,请你算出参赛者最多可以收集到多少钱。
输入:
输入的第一列有一个正整数,代表以下有多少组测试资料。每组测试资料的第一列有2个整
数n,k(均介于1到100之间)。接下来的n列,每列有n个整数(均介于0到100之间),代表
这n*n格子矩阵中每个格子里的钱。
输入的第一列与第一组测试资料之间,以及各组测试资料之间均有一空白列。
输出:
对于每一组测试资料输出一列,输出 ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 03:07:13.0,共阅读2102次,回复0次 |
|
|
 |
BBS联赛作品A5008
|
|
| |
| A3.
/******************************************************************************
A3.imcc---糟糕的向导
Solved by pladene@bbs.whnet.edu.cn
问题:给定一个简单图(不一定连通),找出其所有割点(articulation points)
算法: 二分查找 + 搜索
if (ans[i] == true),第二个地点就是割点
*******************************************************************************/
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#define MAX 100
char name[MAX][35], src[35], des[35];
bool w[MAX][MAX], ans[MAX];
int nv, ne, sum, cnt;
int dfn[MAX], father[MAX], low[MAX];
int ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 03:01:18.0,共阅读1985次,回复0次 |
|
|
 |
BBS联赛作品A5005
|
|
| |
| A2.
Problem A2:
问题描述:(略)
问题分析:这是一个动态规划问题。可以先搜索网格中钱数最大值,按降序依次搜索相应钱数的网格可以收集到
的最大钱数,直到(0,0)格。采用一个辅助网格记录搜索时每一网格能收集到的最大钱数。对每一搜索网格,将自身钱数与
横竖可以跳跃范围内网格收集钱数最大值相加为当前网格可以收集的最大钱数。
算法分析:算法扫描所有网格,时间O(A*4k*n2),A为网格最大值与(0,0)值之差。除网格占用空间,需要辅助空
间O(n2)。
/********************************************************************
Problem A2
Filename: Hopscotch.cpp
Author: Adn@BYHH
SN: A5005
*********************************************************************/
#include <iostream>
#include <fstream>
using namespace std;
#define MAX_N 100
int grid[MAX_N][MAX_N];
int afli_grid[MAX_N][MA ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 02:33:36.0,共阅读1945次,回复0次 |
|
|
 |
BBS联赛作品A5002
|
|
| |
| A2.
/************************************************************************/
/* created: 24/3/2004 10:11 */
/* platform: Microsoft Visual C++ v6.0 */
/* filename: Algorithm_A2 */
/* author: SunDrop */
/************************************************************************/
#pragma warning(disable:4786) // VC 版 STL 的一个 bug 。
#include <iostream>
#include <iterator>
#include <utility>
#include <vector>
#include <map>
#pragma hdrstop
using namespace std ;
// 漫游规则的定义和初始化。
// 采用map定义在保证效率的同时使之更清晰。
typedef enum D ...
|
|
| 作者:不祥 imcc张贴于2004-05-07 02:15:51.0,共阅读2174次,回复0次 |
|
|
 |
BBS联赛作品A4008
|
|
| |
| A2.
/*
* 可以把源问题转化成一个在PERT图上求关键路径的问题。
* 首先,每个格子在图上对应一个点,总共有n*n个点。从每个点向
* 它可以到达的点引一条有向边,边权为有向边的起始点对应的格子的
* 钱数。总的边数规模为O(k*n*n)。另外新建
* 一个汇点,所有出度为0的点向这个汇点引一条边。如此可以
* 构造出一个多源单汇的有向图。首先,把多余的源去掉。为此做一个
* 从(0,0)点开始的可达性检测。把不可达的节点删掉。这时我们得到一个
* PERT图。求从源到汇的最长路径,也就是关键路径。求关键路径首先做一次
* 拓扑排序,然后按照排序的结果分别计算源到每个点的关键路径。
* 建立图的复杂度为O(k*n*n),可达性检测的复杂度为O(n*n*k)。求关键路径
* 的复杂度也是O(k*n*n)。所以总的时间复杂度为O(k*n*n).
*/
#include "pertgraph.h"
typedef graph<Node, Edge> Graph;
void main(int argc, char** argv)
{
if (argc != 2) return;
ifstream fin(argv[1]);
int test_count, n, k;
fin >> ...
|
|
| 作者:不祥 imcc张贴于2004-05-06 22:24:16.0,共阅读2105次,回复0次 |
|
|
 |
BBS联赛作品A4007
|
|
| |
| A2.
#include "A2.h"
FILE *in, *out;
int n, k, data_num, maximum, minimum;
int **data;
int init()
{
in = fopen("hopscotch.in", "rt");
if(in == NULL)
{
return 0;
}
out = fopen("hopscotch.out", "wt");
if(out == NULL)
{
return 0;
}
fscanf(in, "%d", &data_num);
data = new int*[MAXNUM];
for(int i = 0;i<100;i++)
data[i] = new int[MAXNUM];
return 1;
}
int getInput()
{
fscanf(in, "%d %d", &n, &k);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
fscanf(in, "%d", &data[i][j]);
}
}
return 1;
}
int uninit()
{
fclose(in);
fc ...
|
|
| 作者:不祥 imcc张贴于2004-05-06 22:02:16.0,共阅读1917次,回复0次 |
|
|
 |
BBS联赛作品A4004
|
|
| |
| A1.
#include <stdio.h>
void main()
{
// read possible guard couples from file
FILE * fp=fopen("schedule.in","r");
if(fp==NULL)
{ printf("schedule.in doesn't exist\n");
return;
}
int guard_num;
// first scan in order to know how many possible couples
fscanf(fp,"%d\n",&guard_num);
int length=0;
int temp1,temp2;
while(fscanf(fp,"%d %d\n",&temp1,&temp2)!=EOF) length++;
int * a=new int [length];
int * b=new int [length];
rewind(fp);
// second scan in order to read and save data
fscanf(fp,"%d\n",&guard_num);
int i=0;
while(fscanf(fp,"%d %d\n",a+i,b+i)!=EOF ...
|
|
| 作者:不祥 imcc张贴于2004-05-06 21:52:28.0,共阅读1930次,回复0次 |
|
|
 |
BBS联赛作品B4003
|
|
| |
| BLUE BBS HELP开发文档
NOTE:本程序只在win2k和winxp上使用Sterm2.052测试过
1 引言
目前smth和ytht以及FireBird都有了Windows NT的版本。它们的程序结构都是过程驱动和面向函数的。不考虑在用户访问量上的优势,分析其源码后会发现存在如下不足:
1)可读性较差。
在纷繁复杂的全局变量以及goto面前,需要很有经验的开发者,以及花费大量的时间才能够对系统架构有所了解,无疑加大了系统升级的难度。
2)独占进程。
例如FB,每一个用户请求都会为其创建一个进程,这样会增大系统资源的开销。为了进一步压缩系统资源的消耗,可采用多线程、共享服务或者线程池的方法。
3)未接入数据库系统
BBS Server每天都要存储和修改大量的数据,FB目前都是使用文件的形式进行存档的,无疑会失去很多使用数据库的好处。
4)封装性和可重用性差
在系统各个板块的设计中会有很多重复的页面元素,例如列表等。由于面向过程的设计缺乏继承、重载之类的机制,在制作页面元素以及处理其响应时,即使只有一点小小的变化,都需要调派各类函数,进行很多重复工作。
5)…
Blue BBS系统针对以上这些问题作了一些改进尝试,由于时间和工作量的问题,不可能完善所有的功能,但是它实现了以下的部分。
1)采用面向对象的表达方式
BBS中需要用到的各种元素,例 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-06 21:03:25.0,共阅读2333次,回复0次 |
|
|
|