my downloads folder Results

Page 23 of 40.
Results 441...460 of 789

Sponsored Links:

Download the sample project seen in this video.
Data binding is one of the fundamental concepts for good Windows Phone application design but can be difficult to grasp for newcomers. The core concept is this: No one wants to manually update the user interface elements. I want my UI to automatically reflect the state of my application and data binding helps us do this. We can work exclusively on our Windows Phone UI, bind the values in the UI and then work on the inner logic of the application knowing that all the updates are being reflected to the user. Because of the power in the model you see in this video and post, there are some really great "fringe" benefits in terms of interaction and design that we get along with the core benefits.
So let's build our first data binding. By a happy coincidence, this can also be our first ViewModel from scratch.
I use Visual Studio snippets in the video and in "real life" because it's substantially faster and I have a very poor memory. You can download the notify property snippets I used here. Just extract them into your "DocumentsVisual Studio 2012Code SnippetsVisual C#My Code Snippets" folder and you should be ready to go.
As a "first steps" post, we're going to go through how to build a data binding step by step. To see this model in action, just open up a new
My First Data Binding

In our app, lets create a new ViewModel. I right-clicked in the ViewModel folder and went to "App -> Class..." and created just an empty Class file named "SampleViewModel.cs". This class now looks like this:
class SampleViewModel
We update it to implement the INotifyPropertyChanged event by declaring that interface and using the "notifyInterface" snippet. Hit Alt-Shift-F10 to resolve any refrerences (specifically the System.ComponentModel) and our code should now look like this:
public class SampleViewModel : INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged(string propertyName)
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
Now we can just start creating properties we want to see reflected in our UI. Using our "notifyProp" snippet, we can quickly create a property like the string SampleUserName.
private string _sampleUserName = "";
public string SampleUserName
get { return _sampleUserName; }
_sampleUserName = value;
Now our property is ready to be bound to our XAML.
Define Your Data Context
This part can be skipped for brevity, but I wanted to add it to make sure that there is a complete and comprehensive solution here.
Before our XAML can bind to this property, we need to make the ViewModel visible to our XAML. So we will declare our ViewModel as a static object in our App.xaml.cs
private static SampleViewModel _sampleVM { get; set; }
public static SampleViewModel SampleVM
if (_sampleVM == null)
_sampleVM = new SampleViewModel();
return _sampleVM;
Then we can set the data context when our XAML view initializes. In the MyView.xaml.cs (also called the "code behind), we can add to the constructor:
public MyView()
this.DataContext = App.SampleVM;
This way we could have the same ViewModel driving multiple Views. This is particularly valuable for a Master-Detail scenario in which we have one View dedicated to showing a list of items and another View for editing or looking at an item detail. With this method, we can maintain a single ViewModel and simply update which item has been selected.
XAML Binding
With our viewmodel defined and our notify properties set up, all we need to do is bind to our XAML UI control. Then any updates we make to our property back in the ViewModel will automatically update in the XAML UI.

And if we wanted changes to the UI to be updated back in our ViewModel, we just set our binding to "TwoWay"

Binding, Sample Data, and Design
In addition to helping us build manageable code with a simple model for XAML UI updates, binding allows us to build our app interfaces in a way that is fast and powerful. Instead of run-view-tweak, run-view-tweak, we can explore design options and do most of our design right inside our tooling without running the application. In fact, if you follow the steps here, you can actually build much of the interaction and XAML of an application up before you start building the logic. The result is the opportunity for a workflow that supports design-driven user-focused application creation.
For this, we're going to move away from our SimpleViewModel with its single property and into a real-world example that
focuses on binding with real-world data. To follow along in this example, download this slightly modified version of the LongListSelector Infinite Scroll example for Windows Phone.
Because we're working with sample data, we want to open the project in Blend.

Open up the MainPage.xaml file and go to the Data tab at the top right corner.Select the project data store and click on the "Create sample data -> Create Sample Data From Class" button.

You'll get a dialog box that allows you to name your data source and select a class from which Blend will generate the data.

Blend will do a "best guess" on what data is in there based on the data types. String will default to lorem ipsum sample text, and int will generate a number, an ObservableCollection will result in a generated list of sample objects. All this data will be saved as a XAML resource file in the SampleData folder. To create bindings for these objects, all we would have to do is drag the object from our Data tab to an control in our "Objects and Timeline" tab.
We could go into this file and edit the data to be something that is a little more realistic for our application. In fact, this is exactly what I've done. For this Twitter app, I added some actual tweets from my timeline as sample data. To see this click on the eye icon next to the "resultListBox".

And now we can see the sample data and how it will look in the application.

Here is where it gets really fun: Right-click on the resultListBox and select "Edit Additional Templates -> Edit ItemTemplate -> Edit Current".

This will take you to a XAML DataTemplate where we can define, in real time and against real data, how we want our items to be displayed. We could give our tweet text a height limit and tell it to use ellipses and see that reflected instantly in our design.

As you can see, this is an incredibly powerful way to design and build applications for Windows Phone and it is all made possible by DataBinding.


With the release of Windows Phone 8, a few new developer API endpoints were made available that allow third-party applications to change the device lockscreen image. In this article, I am establishing the infrastructure and building a mobile application that provides the ability to choose from a number of dynamic image sets, from which images can be selected and then cycled as lockscreen wallpapers.
What do you need

You will need to download and install ASP.NET MVC3 to work on the web frontend and Windows Phone 8 SDK to work on the mobile applications. An Azure Mobile Services account will be necessary, and of course don’t forget to download and install the Azure Mobile Services client libraries. All three components are available at no additional charge.
NOTE: Without the Azure Mobile Services SDK installed on the development machine, the compilation process will fail for the Windows Phone application.
Setting up The Data Store

First we need to establish the general design of the application and organize the workflow. The application will provide two ways to assign the dynamic lockscreen:

With the help of custom image sets that are provided by the service;With the help of self-created image sets, aggregated from images provided by the service but ultimately managed by the end-user.
Let’s talk about the general data model. Every image belongs to a certain category and to keep track of each we need a table with two columns—category ID and category name. We also need another core table containing the image references themselves, with the following columns: image URL, descriptive name, and the category ID to which it belongs. The overall structure looks like this:

Now to the Windows Azure Management Portal and creating a new Mobile Service.

Once created, you need to specify database information, just like you would with a standard SQL Server database:

As the database is being created, you can easily integrate it with SQL Server Management Studio. You will need the server address, which may be obtained in the Azure Management Portal. To login, use the credentials that you set when creating the core database.
Create the two tables mentioned above, with the following column configuration:

ID - intName – varchar(100)

ID – intURL – varchar(500)Name – varchar(100)CategoryID – int
You can create these tables either in the SQL Server Management Studio or through the Azure Management Portal. However, you will need the Management Studio to create the column structure, as the Azure Management Portal does not offer this functionality right now.
By default, the id column will be created automatically. To add the Name column to the Categories table, run this query:

ALTER TABLE c4flockscreen.CategoriesADD Name VARCHAR(100)To add the missing columns to the Images table, simply execute this query:

ALTER TABLE c4flockscreen.ImagesADD URL VARCHAR(500),Name VARCHAR(100),CategoryID INTNow that the database is ready, we’ll proceed to working on the web layer, which will effectively be the administrative portal for the service.
Creating the Web Portal

There should be a way to easily manage images and constantly expand the collection of possible lockscreen wallpapers. One way to do this is create a basic management portal that can carry basic CRUD operations.
Start by creating an empty project:

If you are not yet aware of the Model-View-Controller (MVC) development pattern, here is a good read explaining the fundamentals.
Create a new controller in the Controllers folder, named HomeController. This will be the only controller created in this project. For now, add an ActionResult-based function that will return the main view:

using System.Web.Mvc;namespace Coding4Fun.Lockscreen.Web.Controllers{ public class HomeController : Controller { public ActionResult MainView() { return View(); } }}Having the controller without the proper views is pointless, so create a new view in Views/Home and name it MainView. For now, do not focus on the visual layout of the page, but rather on the functional aspect of the web frontend. If you run the application now, you will most likely get a 404 response. That is because the associated home view is by default not found. Open App_Start/RouteConfig.cs and make sure that the default view is set to MainView instead of Index.

routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "MainView", id = UrlParameter.Optional });The core is created and now if running the web application you will see a basic HTML page:

We now need to handle data from the Azure Mobile Services database. Out-of-the-box, there is no ASP.NET SDK available, but the database can be easily accessed through a REST API. But before that, we need to define the data models for the Categories and Images table. Begin by creating two classes in the Models folder:

public class Category{public int? id { get; set; }public string Name { get; set; }}Image.cs:

public class Image{public int? id { get; set; } public string URL { get; set; }public string Name { get; set; }public int CategoryID { get; set; }}Each of the properties is tied to the associated column in the database we created earlier. Notice that the ID values are nullable. This is introduced because the index will by default be automatically assigned. When new instances of Category or Image are created, I will not explicitly set the id property, so keeping it null instead of at a potential default value of 0 will ensure that it is properly set on the backend.
Let’s now create the connectivity engine that will allow us to query the content of the data store. For this purpose, I created a DataStore folder and a DataEngine class inside it. We will need a unique API key for each of our requests, so open the Azure Management Portal and obtain it from there:

In order to keep consistency between projects, and to be able to re-use the same Azure Mobile Services API key and core URL, I created an AuthConstants class in the context of the Coding4Fun.Lockscreen.Core project. It carries three static fields:

public static class AuthConstants{ public static string AmsApiKey = "YOUR_KEY_HERE"; public const string AmsUrl = ""; public const string AmsTableUrl = AmsUrl + "tables/";}Back in the ASP.NET project, the query operations are carried with the help of HttpClient initialized in the class constructor, which also includes the key used to authenticate the requests via the X-ZUMO-APPLICATION header:

private HttpClient client;public DataEngine(){ client = new HttpClient(); client.DefaultRequestHeaders.Add("X-ZUMO-APPLICATION", KEY); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); }This is the basic data harness. I also implemented two core methods in order to get all existing categories:

public IEnumerable GetAllCategories(){ var result = client.GetStringAsync(string.Concat(CORE_URL,"Categories")).Result; IEnumerable categories = JsonConvert.DeserializeObject(result); return categories; }And images:

public IEnumerable GetAllImages(){ var result = client.GetStringAsync(string.Concat(CORE_URL, "Images")).Result; IEnumerable images = JsonConvert.DeserializeObject(result); return images; }For each of these, a basic request is made with the table name appended to the base URL (represented by the CORE_URL constant). Since JSON.NET is now bundled with ASP.NET, I am able to easily deserialize the returned JSON data array to an IEnumerable. There is one problem, however, with the GetAllImages approach. It implies that even if I want to use LINQ to query the existing image collection, I have to first download the entire set locally.
Fortunately, the Azure Mobile Services REST API provides an endpoint with filtering, and that’s what I am using in GetCategoryById and GetImagesByCategoryId:

public Category GetCategoryById(int id){ string composite = string.Concat(CORE_URL, "Categories?$filter=(id%20eq%20", id.ToString(), ")"); var result = client.GetStringAsync(composite).Result; IEnumerable categories = JsonConvert.DeserializeObject(result); return categories.FirstOrDefault();}public IEnumerable GetImagesByCategoryId(int id){ string composite = string.Concat(CORE_URL, "Images?$filter=(CategoryID%20eq%20", id.ToString(), ")"); var result = client.GetStringAsync(composite).Result; IEnumerable images = JsonConvert.DeserializeObject(result); return images();}Notice the ?$filter= parameter, in which the conditional is URL encoded and is wrapped in parentheses. For the category query, I am checking the id value, and for the image I’m checking CategoryID.
In the Views/Home folder, create a new view and name it Images. It will be used to list existing images that are associated with one of the selected categories. You also need to adjust the controller code to handle the incoming data:

using Coding4Fun.Lockscreen.Web.DataStore;using System.Web.Mvc;namespace Coding4Fun.Lockscreen.Web.Controllers{ public class HomeController : Controller { DataEngine engine; public HomeController() { engine = new DataEngine(); } public ActionResult MainView() { var categories = engine.GetAllCategories(); return View(categories); } public ActionResult Images(int categoryId) { var images = engine.GetImagesByCategoryId(categoryId); if (images != null) { return View(images); } return View("MainView"); } }}For the main view, I am getting the list of categories and passing them as the bound model. For the Images view, the category ID is passed as an argument that will later enable the engine to return a list of all images that have CategoryID set to that value. In case the returned list is not null, the view is shown. Otherwise, the main view is the terminal point.
In its current state, I’ll be able to use the frontend to list existing categories and images, but not to add, remove, or update items. Adding a category and an image is a matter of modifying an HttpClient request, with the help of HttpRequestMessage. For example, here is how I can add a category through my DataEngine class:

public HttpStatusCode AddCategory(Category category){ var serializedObject = JsonConvert.SerializeObject(category, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); var request = new HttpRequestMessage(HttpMethod.Post, string.Concat(CORE_URL, "Categories")); request.Content = new StringContent(serializedObject, Encoding.UTF8, "application/json"); var response = client.SendAsync(request).Result; return response.StatusCode;}JSON.NET capabilities are used to serialize the object that needs to be inserted. The POST request is executed against the standard table URL, with the UTF8 encoded JSON string. Since the client is already carrying the basic authentication header, all that needs to be done is calling the SendAsync function.
Updating a category follows the same approach, though a PATCH method is used for the request and the URL contains the index of the category that needs to be updated:

public HttpStatusCode UpdateCategory(Category category){ var request = new HttpRequestMessage(new HttpMethod("PATCH"), string.Concat(CORE_URL, "Categories", "/",; var serializedObject = JsonConvert.SerializeObject(category); request.Content = new StringContent(serializedObject, Encoding.UTF8, "application/json"); var response = client.SendAsync(request).Result; return response.StatusCode;}To delete a category from the data store, one simply needs to pass a parameter to it that identifies the index of the category that needs to be removed:

public HttpStatusCode DeleteCategoryFromId(int categoryId){ var request = new HttpRequestMessage(HttpMethod.Delete, string.Concat(CORE_URL, "Categories", "/", categoryId)); var response = client.SendAsync(request).Result; return response.StatusCode;}For images, the same methods can be used, with the Images table passed as the name for the target in the composite URL. Let’s now get back to working on some of the views. A static category list is not fun, so let’s create a way to add new categories. Right click on the Views/Home folder and select Add View:

A great thing about the view creation process in Visual Studio is the fact that you are able to use a basic scaffold template for a strongly-typed view. In this case, I am associating it with a Category class and using the Create template. I now need to modify the controller code to process requests to AddCategory. I need to handle two types of requests, GET and POST, because the view will be displayed to both add an item and submit an item:

public ActionResult AddCategory(){ return View(); }[HttpPost]public ActionResult AddCategory(Category category){ if (ModelState.IsValid) { engine.AddCategory(category); return RedirectToAction("MainView"); } return View();}For a GET request, I am simply returning the view. For a POST view, I am adding the category that was defined by the bound model through the local DataEngine instance, after which the user is redirected to the main view. But we also need to add an ActionResult for the MainView to obtain the list of items that are currently in the Categories table:

public ActionResult MainView(){ var categories = engine.GetAllCategories(); return View(categories);}The DataEngine instance will return all categories in an IEnumerable form that are passed as the model for the main view. The layout of MainView.cshtml can be as simple as a table:

@{ ViewBag.Title = "Coding4Fun Dynamic Lockscreen"; }Coding4Fun Dynamic Lockscreen - Categories

ID Category Name @p.Name @Html.ActionLink("Images", "Images", new { categoryId = }) @Html.ActionLink("Edit", "EditCategory", new { categoryId = }) @Html.ActionLink("Delete", "DeleteCategory", new { categoryId = }) @Html.ActionLink("Add Category", "AddCategory")The ActionLink helper allows me to invoke a view and, if necessary, pass specific parameters to it (e.g., when I need to identify the category that needs to be deleted or edited). Some of the views listed here are not yet created, but I can easily use placeholder names in any case.
The ultimate result for the main page will look like this:

Notice that you are also able to add new categories now by clicking on the Add Category link on the bottom. This will redirect you to the AddCategory view that we created:

Let’s see how to implement the category editing in the web frontend. First of all, create a new view in Views/Home and name it EditCategory. Use the Edit scaffold template. Like AddCategory, EditCategory needs to be handled in two separate ways for GET and POST requests in the controller:

public ActionResult EditCategory(int categoryId){ Category category; category = engine.GetCategoryById(categoryId); if (category != null) return View(category); return View("MainView");}[HttpPost]public ActionResult EditCategory(Category category){ if (ModelState.IsValid) { engine.UpdateCategory(category); return RedirectToAction("MainView"); } return View();}For a GET request, we need to identify the category that needs to be added by its index, so we are using a categoryId argument passed to the view, which is later used by the DataEngine instance to retrieve the category from the data store. For a POST action, the implementation for UpdateCategory from above is used, where a PATCH request is run with the serialized object bound to the view.
For the Delete action, no additional view is necessary but the controller still needs a handler, so we can use a snippet like this:

public ActionResult DeleteCategory(int categoryId){ engine.DeleteCategoryFromId(categoryId); return RedirectToAction("MainView");}You can use the same approach to add, delete, and edit items in the list of images. For adding images, however, you might want to pass the category identifier. When images are listed after the category has been selected, it is necessary to provide a way to identify the category to which new entities should be added. To do this, we can. in the main controller. pass the category index to the view when the Images action is being triggered:

public ActionResult Images(int categoryId){ var images = engine.GetImagesByCategoryId(categoryId); if (images != null) { ViewData["CID"] = categoryId; return View(images); } return View("MainView");}Afterwards, the categoryId value can be obtained by using the CID key for ViewData inside the view itself.
Let’s now take a look at how images are represented for each category. I created a custom view to list all the images associated with the Images category. If you look above at the controller code, you will notice that I am passing the category ID, through which the image set query is executed, and the returned collection is set as the bound model:

public ActionResult Images(int categoryId){ var images = engine.GetImagesByCategoryId(categoryId); if (images != null) { ViewData["CID"] = categoryId; return View(images); } return View("MainView");}When an image needs to be added, call the AddImage view. In HomeController.cs, it carries implementations for both GET and POST requests:

public ActionResult AddImage(int categoryId){ Image image = new Image(); image.CategoryID = categoryId; return View(image); }[HttpPost]public ActionResult AddImage(HttpPostedFileBase file, Image image){ if (file != null && file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/Uploads"), image.CategoryID.ToString(), fileName); string dirPath = Path.GetDirectoryName(path); if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); file.SaveAs(path); string applicationUrl = string.Format("{0}://{1}{2}", HttpContext.Request.Url.Scheme, HttpContext.Request.ServerVariables["HTTP_HOST"], (HttpContext.Request.ApplicationPath.Equals("/")) ? string.Empty : HttpContext.Request.ApplicationPath ); image.URL = Path.Combine(applicationUrl, "Uploads", image.CategoryID.ToString(), fileName); } if (ModelState.IsValid && image.URL != null) { engine.AddImage(image); return RedirectToAction("Images", new { categoryID = image.CategoryID }); } return View();}When a GET request is executed against the AddImage endpoint, I pass the category ID as the flag, signaling which category the image should be included in. When a POST request is executed, it can go two ways—either the user is passing an existing link to a hosted image or the user is uploading his own image to the local server. When an upload is inbound, HttpPostedFileBase carries the content that needs to be pushed to the server.
The upload component on the view itself is done by creating a form with a file input:

Or you could upload your own file:

@if (Model != null){ using (Html.BeginForm("AddImage", "Home", FormMethod.Post, new { enctype = "multipart/form-data", image = Model })) { @Html.HiddenFor(model => model.CategoryID); }}If there is no file selected, the system assumes that the user just decided to add an existing URL.
It’s important to mention that the upload workflow relies on the availability of the Upload folder. It is created by default when the project is deployed to the server, but you also need to make sure that the ASP.NET user on the machine where IIS is located has the appropriate write permission for the folder.
The Windows Phone 8 Application Foundation

Create a new Windows Phone 8 application and add a reference to Windows Azure Mobile Services Managed Client. It should be available in the Extensions section if you installed the Windows Azure Mobile Services SDK as I mentioned at the beginning of the article:

In App.xaml.cs you need to create an instance of MobileServiceClient that will be used as the central connection point to the database. Notice that I am using the predefined AMS and API KEY string constants:

public static MobileServiceClient MobileService =new MobileServiceClient(AuthConstants.AmsUrl, AuthConstants.AmsApiKey);The mobile application should also carry the data models for both the categories and images. That said, we can reorganize those a bit for a more convenient data binding layout. To ensure that we can reuse the classes from different application components, I am once again using the Coding4Fun.Lockscreen.Core project.
Create a new folder called Models and add a new class called Category:

using System.Collections.ObjectModel;namespace Coding4Fun.Lockscreen.Core.Models{ public class Category { public Category() { Images = new ObservableCollection(); } public int? id { get; set; } public string Name { get; set; } public ObservableCollection Images { get; set; } public override string ToString() { return Name; } }}We are still relying on a nullable index value, but now there is an ObservableCollection for images. The reason for using this specific collection type is because with an ObservableCollection, binding updates are performed automatically when new items are added or removed, therefore cutting the need to implement the notification mechanism.
The ToString function is overridden to simplify data extraction on binding. When a collection with categories will be hooked to a list, for example, I don’t have to create a converter or a property link.
For the Image model, create a new class called Image in the same Models folder:

namespace Coding4Fun.Lockscreen.Core.Models{ public class Image { public int? id { get; set; } public string URL { get; set; } public string Name { get; set; } public int CategoryID { get; set; } }}Application Workflow & Storage

Let’s talk about how image categories will be handled in the application. On application startup, the database is queried for the available categories and each of them is listed on the home screen. If the user taps on one of the categories, the database is queried for the images that are associated with the category index.
However, the user should also be able to create his own custom categories that will only be available in-app. Those categories can carry images from multiple other categories, if necessary, with the default reference set to the internal storage.
Since we are working with local storage, let’s create a helper class called LocalStorageHelper in the Coding4Fun.Lockscreen.Core project in the Storage folder. This class will carry basic read and write functions, allowing us to store data internally:

public static class LocalStorageHelper{ public async static void WriteData(string folderName, string fileName, byte[] content) { IStorageFolder rootFolder = ApplicationData.Current.LocalFolder; if (folderName != string.Empty) { rootFolder = await rootFolder.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists); } IStorageFile file = await rootFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); using (var s = await file.OpenStreamForWriteAsync()) { s.Write(content, 0, content.Length); } } public static async void ClearFolder(string folderName) { var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(folderName); if (folder != null) { foreach (IStorageFile file in await folder.GetFilesAsync()) { await file.DeleteAsync(); } } } public static async Task ReadData(string fileName) { byte[] data; StorageFolder folder = ApplicationData.Current.LocalFolder; StorageFile file = await folder.GetFileAsync(fileName); using (Stream s = await file.OpenStreamForReadAsync()) { data = new byte[s.Length]; await s.ReadAsync(data, 0, (int)s.Length); } return Encoding.UTF8.GetString(data, 0, data.Length); } }Notice that I am using the newly-introduced StorageFolder/StorageFile capabilities. If you worked with Windows Store application development, you are probably already familiar with them. Application.Current.LocalFolder gives me direct access to the local directory. which can be modified from within the application itself. It works in a manner similar to IsolatedStorageFile in Windows Phone 7, but with more flexibility when it comes to creating new folders and files and well doing file sweeps.
As I mentioned above, there will be internal data stored as XML. For this purpose, I need a class that carries serialization and deserialization routines, and I can simplify this task by using the Coding4Fun Toolkit Serialize.Save and Serialize.Open capabilities. Calls to these functions allow flexible serialization, where by default the static class is not aware of the serialization type, but is instead able to dynamically infer it from the incoming data. Once the byte layout is obtained for the content, I use the LocalStorageHelper class to write it to a file.
As there are multiple UI items that need to be bound to collections and object instances, I have a CentralBindingPoint class in my main project that is my main view model (it implements INotifyPropertyChanged). It implements the singleton pattern, so that the main instance is created on initialization and is subsequently re-used as necessary:

using Coding4Fun.Lockscreen.Core.Models;using System;using System.Collections.ObjectModel;using System.ComponentModel;namespace Coding4Fun.Lockscreen.Mobile{ public class CentralBindingPoint : INotifyPropertyChanged { static CentralBindingPoint instance = null; static readonly object padlock = new object(); public CentralBindingPoint() { Categories = new ObservableCollection(); CustomCategories = new ObservableCollection(); } public static CentralBindingPoint Instance { get { lock (padlock) { if (instance == null) { instance = new CentralBindingPoint(); } return instance; } } } private ObservableCollection _categories; public ObservableCollection Categories { get { return _categories; } set { if (_categories != value) { _categories = value; NotifyPropertyChanged("Categories"); } } } private ObservableCollection _customCategories; public ObservableCollection CustomCategories { get { return _customCategories; } set { if (_customCategories != value) { _customCategories = value; NotifyPropertyChanged("CustomCategories"); } } } private Category _currentCategory; public Category CurrentCategory { get { return _currentCategory; } set { if (_currentCategory != value) { _currentCategory = value; NotifyPropertyChanged("CurrentCategory"); } } } public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { System.Windows.Deployment.Current.Dispatcher.BeginInvoke( () => { PropertyChanged(this, new PropertyChangedEventArgs(info)); }); } } }}On the main page, I create a Pivot-based layout to have an easy way to transition between the web collections (categories) and the local ones:

For each of the collection types, there is a ListBox with a custom DataTemplate assigned for each item. The items are obtained from the Categories collection for web sets and the CustomCategories collection for local sets, both in the CentralBindingPoint view model.
The categories are loaded with the help of the DataEngine class that I added in the Data folder in the main application project. It is a wrapper for the Azure Mobile Services data operations, allowing me to aggregate the list of categories and images, given that I know the category index:

public class DataEngine{ async public Task GetCategoryList() { IMobileServiceTable table = App.MobileService.GetTable(); List data = await table.ToListAsync(); return data; } async public Task GetImagesByCategoryId(int categoryId) { IMobileServiceTable table = App.MobileService.GetTable(); List data = await table.Where(x => x.CategoryID == categoryId).ToListAsync(); return data; }}When the main page loads, I use the local DataEngine instance to call GetCategoryList and obtain a List collection that is subsequently transformed into an ObservableCollection through one of the default constructors:

async void MainPage_Loaded(object sender, RoutedEventArgs e){ CentralBindingPoint.Instance.Categories = new ObservableCollection(await dataEngine.GetCategoryList()); }When a category is selected in the web sets list, I assign the selected item as the current category and navigate to the ImageSetPage.xaml page that will display the associated images:

async void ListBox_SelectionChanged_1(object sender, System.Windows.Controls.SelectionChangedEventArgs e){ var box = (ListBox)sender; if (box.SelectedItem != null) { Category selectedCategory = (Category)box.SelectedItem; selectedCategory.Images = new ObservableCollection (await dataEngine.GetImagesByCategoryId((int); CentralBindingPoint.Instance.CurrentCategory = selectedCategory; NavigationService.Navigate(new Uri("/ImageSetPage.xaml", UriKind.Relative)); }}Notice that the images are not loaded at the same time as the categories; rather, they’re loaded only when a category has been selected, hence the GetImagesByCategoryId call on selection.
For a custom set, the procedure is pretty much the same, the only difference being the fact that image references are already present since those were deserialized from the local storage:

private void lstCustomSets_SelectionChanged_1(object sender, SelectionChangedEventArgs e){ var box = (ListBox)sender; if (box.SelectedItem != null) { Category selectedCategory = (Category)box.SelectedItem; CentralBindingPoint.Instance.CurrentCategory = selectedCategory; NavigationService.Navigate(new Uri("/ImageSetPage.xaml", UriKind.Relative)); }}In ImageSetPage.xaml I use a ListBox with a WrapPanel in the ItemsPanelTemplate, which ensures that I can have only two images in a row and any additions will be wrapped, with a fixed row length. You can get that control from the WPToolkit (formerly known as Silverlight Toolkit for Windows Phone, available on NuGet).

Here is the basic XAML layout:

Now that we have a basic skeleton for the incoming data, let’s see how it can be transformed into a live lockscreen, on which wallpapers can be cycled. In the ImageSetPage.xaml page I have a button in the application bar that allows me to set the current category as the source for the switching wallpapers.
Currently, each Image instance carries an image URL and the images can be located anywhere outside the application. This can cause problems with the wallpaper setting process, however, since the API only allows local images to be set as background. This means that I need to download each image to the local application folder:

private async void btnSetStack_Click_1(object sender, EventArgs e){ var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication; if (!isProvider) { var op = await Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync(); isProvider = op == Windows.Phone.System.UserProfile.LockScreenRequestResult.Granted; } if (isProvider) { downloadableItems = new List(); fileItems = new List(); foreach (var image in CentralBindingPoint.Instance.CurrentCategory.Images) { downloadableItems.Add(image.URL); fileItems.Add(Path.GetFileName(image.URL)); } SerializationHelper.SerializeToFile(fileItems, "imagestack.xml"); LocalStorageHelper.ClearFolder("CurrentSet"); DownloadImages(); grdDownloading.Visibility = System.Windows.Visibility.Visible; }}First of all, I need to make sure that the application can set a lockscreen background and is registered in the OS as a provider. The application needs to state its intent to be able to access the wallpaper by adding this snippet to the WMAppManifest.xml, right after the Tokens node:

downloadableItems is a collection that represents the download queue. fileItems contains the local file names for each image that is about to be downloaded and will be serialized and used in the background agent to iterate through the category files. Whenever the download process is started, an overlay becomes visible to notify the user that the image acquisition process is in progress.
Also, notice the fact that I am calling LocalStorageHelper.ClearFolder, passing the name of the folder as the first argument. I do not want to keep images for sets that are not active, therefore when a new set is selected, the currently stored images are deleted from the CurrentSet folder and replaced by the ones that are about to be downloaded. The implementation of the ClearFolder function looks like this:

public static void ClearFolder(string folderName{ if (store.DirectoryExists(folderName)) { foreach (string file in store.GetFileNames(folderName + "*.*")) { store.DeleteFile(folderName + "" + file); } }}Once the file names are stored in imagestack.xml, the image contents are downloaded via DownloadImages:

void DownloadImages(){ WebClient client = new WebClient(); string fileName = Path.GetFileName(downloadableItems.First()); client.OpenReadAsync(new Uri(downloadableItems.First())); client.OpenReadCompleted += (sender, args) => { Debug.WriteLine("Downloaded " + fileName); LocalStorageHelper.WriteData("CurrentSet", fileName, StreamToByteArray(args.Result)); downloadableItems.Remove(downloadableItems.First()); if (downloadableItems.Count != 0) DownloadImages(); else { grdDownloading.Visibility = System.Windows.Visibility.Collapsed; LocalStorageHelper.CycleThroughImages(); //ScheduledActionService.LaunchForTest("LockscreenChanger", TimeSpan.FromSeconds(5)); } };}Here you can see that I am making a call to LocalStorageHelper.CycleThroughImages—a function that reads the file that contains the current set and picks the first image, assigning it to be the current wallpaper and then pushing it to the back of the list, making the succeeding image the next in line for the wallpaper:

public static void CycleThroughImages(){ List images = Coding4Fun.Phone.Storage.Serialize.Open("imagestack.xml"); if (images != null) { string tempImage = images.First(); Uri currentImageUri = new Uri("ms-appdata:///Local/CurrentSet/" + tempImage, UriKind.Absolute); Windows.Phone.System.UserProfile.LockScreen.SetImageUri(currentImageUri); images.Remove(tempImage); images.Add(tempImage); Coding4Fun.Phone.Storage.Serialize.Save("imagestack.xml", images); }}You might be wondering why I’m not using Queue for this. After all, Enqueue and Dequeue would make things a bit easier. The problem is that a Queue instance cannot be directly serialized without being transformed to a flat list. Therefore, I am sticking to minimal resource processing by manipulating a List instance instead.
The recursive image download method runs until the download queue is emptied, after which the overlay is hidden.
Background Agent

At this point, we have the images locally stored and listed in an XML file. If the user accepted the system prompt, the application has also been registered as a lockscreen background provider, but there is not yet a single piece of code that would actually set the wallpaper cycle. For that, create a new Background Agent project in your solution. I named mine Coding4Fun.Lockscreen.Agent.
The OnInvoke function in ScheduledAgent.cs is executed at 30-minute intervals. This is a time limit defined by the PeriodicTask background agent type that we’ll be using here. You need to add the following snippet to it:

protected override void OnInvoke(ScheduledTask task){ var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication; if (isProvider) { LocalStorageHelper.CycleThroughImages(); } NotifyComplete();}As with the download snippet, I am ensuring that before I attempt to change the wallpaper the application is a registered provider. Otherwise, an exception will be thrown and the background agent will crash. The bad thing about periodic tasks crashing is the fact that once two consecutive crashes occur, the task is removed from the task queue and the backgrounds will not be changed.
If the application is a provider, call CycleThroughImages to set the new background and push the old one to the end of the list. To make sure that a different image is selected each time, the original deserialized list is modified, where the first image now becomes last, switching the stack up, after which it is serialized back into imagestack.xml.
The background agent needs to be registered in the WMAppManifest.xml. Inside the Tasks node, add an ExtendedTask:

Also, when the application starts, you need to ensure that the task is registered, and register it if it isn’t yet. Use the Application_Launching event handler for this task:

private void Application_Launching(object sender, LaunchingEventArgs e){ string taskName = "LockscreenChanger"; var oldTask = ScheduledActionService.Find(taskName) as PeriodicTask; if (oldTask != null) { ScheduledActionService.Remove(taskName); } PeriodicTask task = new PeriodicTask(taskName); task.Description = "Change lockscreen wallpaper."; ScheduledActionService.Add(task); LoadCustomCategories(); }Here, LoadCustomCategories will deserialize the existing custom categories, so that those can be shown in the main page after the application starts:

private async void LoadCustomCategories(){ try { CentralBindingPoint.Instance.CustomCategories = (ObservableCollection)await SerializationHelper.DeserializeFromFile( typeof(ObservableCollection), "customcat.xml"); } catch { Debug.WriteLine("No customcat.xml - no registered custom categories."); }}Now the backgrounds will automatically change based on the web sets that you will activate every 30 minutes.
Working with Custom Categories

Let’s create some custom sets. To manage user input, I leverage the CustomMessageBox control available in the Windows Phone Toolkit. It has enough flexibility to let me choose between adding a TextBox control, to have the user create the new category or use a ListPicker to show the available custom categories in a consistent UI layout.
When the user decides to create a new category, he taps the plus button in the application bar on the main page:

The implementation for the call is simple:

private void btnSetStack_Click_1(object sender, EventArgs e){ TextBox textBox = new TextBox(); CustomMessageBox box = new CustomMessageBox() { Caption = "Add Custom Category", Message = "Enter a unique name for the new category.", LeftButtonContent = "ok", RightButtonContent = "cancel", Content = textBox }; box.Dismissed += (s, boxEventArgs) => { if (boxEventArgs.Result == CustomMessageBoxResult.LeftButton) { if (!string.IsNullOrWhiteSpace(textBox.Text)) { var categoryCheck = (from c in CentralBindingPoint.Instance.CustomCategories where c.Name == textBox.Text select c).FirstOrDefault(); if (categoryCheck == null) { Category category = new Category() { Name = textBox.Text }; CentralBindingPoint.Instance.CustomCategories.Add(category); Coding4Fun.Toolkit.Storage.Serialize.Save( "customcat.xml", CentralBindingPoint.Instance.CustomCategories); } else { MessageBox.Show("Add Custom Category", "This category name was already taken!", MessageBoxButton.OK); } } } }; box.Show(); }When the message box is dismissed, I check which button is pressed to take the appropriate course of action. Let’s assume that the user decided to add the new category—we need to check and make sure that there isn’t already a category with the same name in the existing collection. If there isn’t one, a new Category instance is created, added to the collection in the main view model, and serialized to customcat.xml.
The user also needs to be able to add images from any category to another custom category. To do this, I decided to give the user the option to carry across the image name and URL when he taps on an image in the ImageSetPage.xaml.
Remember, if there are no current custom categories registered, the user should be informed that he should create some first, so the alternative route for the dialog with custom category name selection should be a message box alert:

Here is the snippet that does this:

private void lstImages_SelectionChanged_1(object sender, SelectionChangedEventArgs e){ if (CentralBindingPoint.Instance.CustomCategories.Count > 0) { if (lstImages.SelectedItem != null) { ListPicker picker = new ListPicker() { Header = "Custom category name:", ItemsSource = CentralBindingPoint.Instance.CustomCategories, Margin = new Thickness(12, 42, 24, 18) }; CustomMessageBox messageBox = new CustomMessageBox() { Caption = "Add To Custom Category", Message = "Select a registered custom category to add this image to.", Content = picker, LeftButtonContent = "ok", RightButtonContent = "cancel" }; messageBox.Dismissing += (s, boxEventArgs) => { if (picker.ListPickerMode == ListPickerMode.Expanded) { boxEventArgs.Cancel = true; } }; messageBox.Dismissed += (s2, e2) => { switch (e2.Result) { case CustomMessageBoxResult.LeftButton: { if (picker.SelectedItem != null) { Category category = (from c in CentralBindingPoint.Instance.CustomCategories where c.Name == picker.SelectedItem.ToString() select c).FirstOrDefault(); if (category != null) { category.Images.Add((Coding4Fun.Lockscreen.Core.Models.Image)lstImages.SelectedItem); Coding4Fun.Toolkit.Storage.Serialize.Save( "customcat.xml", CentralBindingPoint.Instance.CustomCategories); } lstImages.SelectedItem = null; lstImages.IsEnabled = true; } break; } case CustomMessageBoxResult.RightButton: case CustomMessageBoxResult.None: { lstImages.SelectedItem = null; break; } } }; messageBox.Show(); } } else { MessageBox.Show("Add To Custom Category", "Tapping on an image will prompt you to add it to a custom category" + Environment.NewLine + "Seems like you don't have any custom categories yet.", MessageBoxButton.OK); }}Once the category is selected from the list, the image is added to the Images collection in the Category instance, and the category list is serialized to preserve the changes. There are no restrictions as to which categories can fetch images to other categories—we can even select images from custom categories and include them in other categories. The image can be added multiple times to the same category as well.

With Azure Mobile Services and a managed SDK available for Windows Phone, as well as an open REST API, it is fairly easy to build connected applications on multiple platforms at once without major logic and code base modifications.


In late May, I arrived in Redmond to work as an intern on the Channel9 team. I had the freedom to choose what I was going to work on, so I decided to challenge myself and work outside my comfort zone, utilizing less C# and managed code and more C++ and DirectX. To do so, I decided to highlight the capabilities of Windows 8—that’s how FallFury was born.
FallFury is a 2D platformer in which the player controls a falling bear, trying to avoid obstacles, dodge missiles, and destroy monsters as the bear falls. The project incorporates several of the new Windows 8 APIs, including the accelerometer and touch as well as integrations with core OS capabilities such as settings and share charms. Additionally, the project leverages the most exacting addition to the Visual Studio development environment—hybrid application development with XAML, C++, and DirectX.
Check out the video for this article at
Design & Idea

From the outset, Rick Barraza and I decided that since our target audience was composed of both kids and adults, the main character had to be familiar to both groups. Teddy bears turned out to be the best choice. Rick spent a day creating tens of potential bear drawings—out of which I had to choose one:

As the bear’s fall progresses, the character encounters a variety of obstacles dependent on the level type and complexity. Those obstacles should of course be avoided, so as the user tilts the device, the character in the game moves in the associated direction.
The design of the project took a week, and during this time the following items were determined and conceptualized. Considerations for both tablet and desktop environments directed our decisions:
· The main character layout.
· The way the game progresses as the character falls down.
· How the user interacts with the game in a wide variety of possible scenarios.
· What the game screens look like.
· What the menu system interaction looks like.
· How the game looks in different screen modes and on different device types.
· Some of the bonuses that the main character can pick up during free fall.
· What happens when the user progresses through the game and iterates through levels.
· What is shared and how this is accomplished.
As the game ideas were outlined, Arturo Toledo, the designer behind, was brought on to create the game assets. Then the core design decisions were made and we jumped into the development process.
Beginning the development

You will need to download and install Microsoft Visual Studio 2012 Express for Windows 8 in order to be able to follow the steps that I am describing in this series. The development has to be done on Windows 8, because the end result is a Windows Store application that relies on Windows 8 APIs. Though specific hardware is not required, both ARM and x86 devices will work well, so whether you have a Microsoft Surface RT or Samsung Series 7 slate, you will be able to test the code when you have the opportunity.
To get started, open Visual Studio 2012 and select the C++ project types. You will notice that there are several options you can choose from. You want to create a Windows Store application, so choose the appropriate category. Windows Store applications run in a sandbox, outside the boundaries of the standard .NET runtime.
Next, select the Direct2D (XAML) app type from the project list. This is a new application type introduced in Visual Studio 2012 that allows developers to combine native DirectX graphics with XAML overlays. Do not be confused by the fact that there is a Direct2D in the name—you can still invoke DirectX capabilities supported in the WinRT sandbox:

At this point you might be wondering, why choose a hybrid application instead of a fully-native project? The reason behind this decision is that is allows the developer to focus more on fine-tuning the gameplay instead of creating the UI core in pure DirectX. Because XAML is a part of the game, we can create dynamic UI layouts for the HUD, settings charm and menus without touching the graphical backbone. It is possible to do the same directly through DirectX and was a perfect approach for FallFury, considering the time constraints and the fact that I needed minimal UI overlays. Most of the graphics were already processed through the DirectX pipeline, so I did not have to invest significant resources and time into designing low-level structures for the interactivity layer.
FallFury uses XAML for the following:

Menus – depending on the screen, the user is able to trigger a number of actions. For example, when the game starts, the user might select the New Game option or decide to take a look at the About screen. In Paused mode, the menu is used to resume the game, adjust settings, or possibly skip a level.Game HUD (score indicator, pick-up indicator, health indicator) – during the gameplay, the user is interested in keeping track of where the character is and what is the state of it. The game HUD is shown in active game mode.Settings charm extensions – the way the Settings charm works, the OS provides the core harness to hook to the Settings popup. Once shown, it is up to the developer to provide a multitude of options that customize the application behavior; any additional popups shown on selection should be designed individually in XAML.User notification – when something happens that can potentially affect the gameplay, the user should be alerted. The core framework provides the capabilities to use a MessageDialog, but in some cases it might not be enough. For example, if new levels are available for download, the user might want to check those out in a custom popup including full previews rather than just text.
When you create the project, a default infrastructure that prints text on the screen—both through Direct2D and XAML—is available. Direct2D is a subset of DirectX APIs and facilitates hardware-accelerated 2D graphics processing. It is used to create basic geometry elements and text. Since I am here working mostly with XAML, I am not going to cover Direct2D in-depth in this article:

I will go into more details regarding the XAML and DirectX interaction model later in the series, but for now, take a look at which parts of the project you have available. First and foremost, you probably notice the combination of both C++ source and header files and DirectXPage.xaml. Starting with Visual Studio 2012, you are now able to create XAML applications in C++. So even if you are an experienced C++ developer who never worked with the Extensible Application Markup Language, you can create the product core in your familiar environment and either import existing XAML structures or delegate the XAML writing to a designer.
If you open the XAML page, you will notice one significant change that you haven’t experienced in standard XAML applications, such as WPF or Silverlight for Windows Phone:

A SwapChainBackgroundPanel is a component that lets the developer overlay XAML on top of the core DirectX-based experience. Look, for example, at the FallFury main menu as the game runs in landscape mode:

The menu buttons, the label and the side curtains are designed and rendered entirely in XAML. The clouds in the background, as well as the teddy bear, are rendered directly through the DirectX stack. The end-user does not notice any difference in the way these elements interact or are displayed. From a development perspective, however, there are several conditions that must be met.
There can only be one instance of SwapChainBackgroundPanel per app. Therefore, you can have only one overlaid XAML controls set. This does not mean that you can’t have multiple controls, but it implies that to do so you have to implement a control management flow that handles content adaptation. For example, if I invoke the pause state in the game, I don’t show the HUD but rather the screen-specific controls that let me resume or abandon the game and the PAUSE label. This switch needs to be handled on both the DirectX and XAML because a state change affects what is shown on the screen and what behaviors are tracked. As you will see through this series, this is not too hard to implement with a helper class that will store the global game state, that can be accessed from anywhere in the game.
When using SwapChainBackgroundPanel, remember that XAML is in all cases overlaid on top of the DirectX renders. So, no matter what controls you are using, those will always be placed on top of what DirectX shows to the user. For more details about how DirectX and XAML interoperate, check out this MSDN article.
Assets for the game

As with any other game, there is not only code involved in production—there are also sound and graphical assets that create a unique experience for the user. FallFury includes a wide variety of graphical assets designed by Toledo Design as well as audio created by David Walliman.
It is important that all graphical resource requirements are established at the very beginning of development. As I mentioned in the Design section of this article, I had to put together a list of all the game screens, power-ups, obstacles, backgrounds, character states and possible particles that were generated from a texture. That way, when the designer started creating the assets, all components blended together well and their styles were compatible with the vision of the game.
While working on the assets, Arturo Toledo created multiple variations of the same set up that showed how assets integrate in different game conditions:

As you follow this series, you will not have to create your own game assets—we at Coding4Fun decided to provide all graphical and audio assets, which you can download here. We not only provided you with the final PNG and DDS files, but also with the raw assets that can be used in Microsoft Expression Design and Adobe Illustrator. Let’s take a look at what is in the package.
You will notice that the project Assets folder is split in several subfolders. All these assets are used mostly in the XAML layer or in game conditions where texture/sound processing is not necessary. There is also an additional asset folder I will discuss later.

Backgrounds –the level backgrounds, such as the blue, purple or red sky, as well as the overlays, such as clouds that move simultaneously with the backgrounds. Each background/overlay combination is assigned to a specific level type.Bear – some of the bear elements that are displayed at different times in the game, such as when the game is over or when the player wins the entire level set.HUD – basic elements that are displayed during the game.Icons – the application icons, in a variety of sizes, required for a Windows Store application.Medals – winning players are awarded a medal. It can be golden, silver, or bronze.Misc – you get some branding elements as well as some graphics that are used in combination with other game items, such as particles.Monsters – monsters are used in the “How To” part of the game.Music – the long tracks used in different levels and screens.Sounds – short sound clips used when different game behaviors in the game are triggered. For example, when the bear gets hit, he lets out a brief cry.
All graphical assets mentioned here are PNG resources. The way I structured the game, some elements are larger than the others and I needed to take some measures to cut down on the package size. PNGs are fairly well-sized without much quality loss compared to raw images. At the beginning of the development process, all graphics were stored in DDS files.
DirectDraw Surface, or DDS, is a file format developed by Microsoft that helps developers optimize some of the graphics by avoiding re-compression performance loss. One of the benefits of using DDS files is the fact that whenever they are processed by the GPU, the amount of memory taken by them is the same as the file size of the DDS file itself. Usually, for 2D games the compression-based performance loss is not necessarily noticeable. For PNG files used on the DirectX stack, resources are allocated to decompress the texture. Not so for DDS files.
Depending on the case, DDS files can be generated on the fly. FallFury preserves relatively small textures in DDS format and larger ones, such as backgrounds, in PNG. It’s the best of both worlds. DDS files can be generated by a tool bundled with the DirectX SDK called dxtex (usually located in C:Program Files (x86)Microsoft DirectX SDK (June 2010)Utilitiesbinx64):

There is also texconv that allows you to create DDS components from the command line, but we’ll explore that later in the series.
All DDS assets are located in the DDS folder in the solution. All that’s there are assets related to levels, such as obstacles, and assets related to character behavior, such as bear states and used weapons and powerups.
Unlike graphic assets that can be mocked from the very start, audio assets are a bit harder to come up with, mainly because at that point you need to be sure what the game will be like at the end. Music and effects should go together with the overall game feel. There are two types of audio components in FallFury—the music and the action-based sound effects. Music is played constantly, whether in the game or on a game screen such as the main menu, unless disabled by the user.
The way the audio engine works in FallFury, files are handled differently depending on where in the game they are used. All music is stored in MP3 files and the short sound effects are stored in uncompressed WAV files.
As a part of the new project that you are creating, replicate the folder structure for the Assets and DDS folders and add them to the solution. The way C++ project references work, you might want to switch to the “Show All Files” mode in the Solution Explorer:

Then, simply copy the folders to the solution folder itself. That way you will have all these resources as a part of the project itself and not just links to external files.
Source Control

It’s a really good idea to use source control. There are multiple options available at no cost, such as CodePlex, Assembla, and Team Foundation Service. You need source control for multiple reasons. The most important reason of them all, however, is that code will break. There were multiple situations where I changed parts of the project and all of a sudden some components stopped working. With the project hooked to a source control system, all I needed was to do a quick rollback to the previous check-in and I was good to go.
A good practice I learned from Clint Rutkas is performing atomic check-ins. When something goes wrong, it is much easier to go back to the check-in where only 20 or 30 code lines were modified from what is currently in the stack, compared to going back to the solution where you will be missing two or more entire source files.
Modular Design & Prototyping

As you are following this project creation from scratch, notice how the entire code base is modular and interchangeable. If I decide to create a new game screen, I can do so easily by inheriting from an existing base class that provides the basic harness. If I want to replace a character model, I can do so by modifying a single class without breaking the entire interaction model.
Prototyping is also a big part of FallFury and it is key that no time is wasted working on features that will have to be entirely replaced or re-written. A good example to this scenario happened just as I started writing the project code. I noticed that the Settings charm required some XAML work for secondary popups that extended from the OS-invoked layer. As I was working on a pure DirectX application, I had to create the XAML in code-behind and that was one of the experiences that could’ve been avoided in a hybrid application. During the prototyping stage it is easy to spot potential integration problems and later change parts of the project to work better together. It is much more complicated to replace project components when the core is wired-in than when you have small parts that independently show how a part of the game works.

As you are about to start writing large amounts of code, you are probably wondering whether actual hardware is needed to test the application. The way FallFury was designed, you will be able to run it on any Windows 8 compatible machine, whether a desktop computer or a tablet. If the game is being run on the desktop, I assume that you probably do not have access to an accelerometer or a touch display. If you are running the game on the tablet, you probably do not have a physical keyboard constantly attached to it. These facts ultimately affect how you experience the game itself. From a development perspective, it is important to have multiple types of target hardware available, because the game might behave differently depending on the device configuration. But it is not required to follow this article series. As long as you have a Windows 8 machine, you are good to go.

Now onto 11 more articles on how to build Fall Fury!


In this episode of Defrag Tools, Andrew Richards and Larry Larsen upgrade the software we downloaded in Episode #1 to the Windows 8 (x86 &x64) and Windows RT (ARM) versions.
Windows Software Development Kit (SDK) for Windows 8
USB3 Debugging Cable
- Note, you must use a USB3 A-A cable designed for debugging, otherwise it will fry your box!

[00:00] - Table tablets and 4K screens at CES 2013
[02:30] - Time to upgrade our tools to the Windows 8Windows RT versions!
[03:20] -
[05:34] - Win7SP1 and Win8RTM folders
[06:16] - Bing: "Windows 8 SDK"
[06:53] - Bing: "Debugging Tools for Windows"
[07:25] - New web installer does installation or download.
[10:02] - MSI files are in the ..Windows Kits8.0StandaloneSDKInstallers
[13:00] - Sync your 'My' folder with SkyDrive so it is always available!
[13:30] - Install the Debugging Tools for Windows to gather the files for xcopy deployment
[15:33] - Visual Studio 2012 builds PDBs with Inline Frame information
[17:23] - Visual Studio 2012 builds PDBs with Local Variable information
[18:55] - Windows 8 supports Network and USB3 kernel debugging
[21:10] - Visual Studio 2012 now supports both the VS and DbgEng debugger engines
[21:40] - Keep posting questions and sending email to!
CES 2013:
Microsoft PixelSense
The Hobbit - Production Diary #4 - Film shot at 5K 48fps 3D


I'd just like to check whether I've got everything right here - it's been a long time since I built a PC!
Here are the key elements:


I am hoping there is some small chance here. In anticipation for installing Windows 7 on my main drive I installed my new 1TB SATA drive as secondary under XP, formatted it and moved files to it. I had no problems accessing anything so I didn't think there would be any problem when I tried the Win7 64 bit RC. I never had any encryption set or anything on those files.

I did a new install to my main 300GB SATA drive where XP was and it installed fine and also created a Windows Old file. However, now when I try to do anything to a .jpg or .mov file on the 2nd drive it tells me I don't have access and I see that the file is encrypted. I have been reading everything on Vista and Windows 7 that might help me and nothing works. I have tried all of the following to no avail:

1) Taken ownership, added any and all permissions with full control, etc
2) Sharing the folders or the drive itself
3) Renaming my Windows 7 PC name and user name to match the old one
4) Adding certifcates for the ability to unencypt files using the local security settings, etc as it says on the web
5) Accessing, moving the files or changing permissions using BART's PE
6) Accessing, moving the files or changing permissions using Virtual XP mode

I am allowed to move the files within the drive itself or delete, but can't move them off, copy them or otherwise open or play them because of "permissions". It should also be noted that these are not all from one camera, the jpgs especially were taken with multiple cameras or even downloaded from the web in the last few years so the fact that they were all mysteriously encypted escapes me. When I look at the details of the encyption of a file, it tells me the old user name and comp name as well as the "certificate thumbprint" which is a string of letters and numbers. I did find a file with the same name in my Windows old folder but it says it is a "system file" and not an actual certificate and won't let me add it as one to use on this computer. I am out of ideas. Help is appreciated. All the programs out there that say they decrypt files have to have the old key and I apparently don't have it. Thanks in advance.

i downloaded new adobe photoshop CS6 installation is completed...
but while i am opeing software it says configuration error:16
i visited the site ADOBE it says "ProgramDataAdobeSLStore" but there is no folder on adobe..but it's not helpful...
& my problem here's the video link Click Here


I have a problem

I want to reduce the size of downloaded media to fit on a standard DVD-R. I thought DVD Shrink would do that but I can't get it to access any file on my hard disc.

My OS is Windows 7 64 bit and use Windows DVD Writer to produce the dVDs.

To reduce the size of the file (Which Windows DVD Writer says necessary) I have tried both programs DVDShrink32 and one I paid for called DVDShrink2010 (I thought it might have some updates for Windows 7 but I am starting to doubt it). I have sent several emails to the provider of the latter but have received no replies to date.

Symptoms: When selecting Files from "Hard disc folder" it comes up with an information box stating :

"DVDSHRINK encountered an error

Failed to open file C:/whatever.

The system cannot find the file specified".

I have tried all sorts of ideas to get it to do something but so far zilch, there seems to be difficulty selecting files from Windows 7 folders.


Hey all,

I came across this free app the other day.
Just toying around, I wanted to change the color of my Windows 7 taskbar without turning off Aero.

Windows 7 Taskbar Color Changer;
Windows Vista/7 Taskbar Color Changer lets you change the color of your Windows Vista or Windows 7 taskbar without changing the window color. For example, if you have a light wallpaper, you can make your taskbar dark without making everything else dark.

No installation necessary, just extract folder and run the exe.

Note: Aero transparency must be enabled.

System Requirements:
Windows Vista SP1 or later, Windows 7At least 512MB RAM is recommendedMicrosoft .NET Framework 4.0 or greater. Download from



Going back to my days on XP, I lost count of the number of times I went to rename a file only for it to disappear because I'd clicked Delete in the Context Menu instead.

This set me on a mission to find out how to change the order of the context menu entries, eventually stumbling across the right string values. This was then continued when I joined the modern world by buying Windows 7.

My system file modification changes the bottom of the context menu from this:
To this:

You'll need to prepare yourself with a modification to the registry to add Take Ownership to the context menu (the easiest option) and download and install ResHack 3.6.0 by Angus J (if you find the tool really helpful, send him an email of gratitude, maybe even a couple of bob. Up to you!).

If you're running a 32bit system you have one file to modify, but if running a 64bit system you'll have to modify two same named files in System32en-US and SysWOW64en-US. They are slightly different so must be treated as separate entities.

OK, so go to the the Windows Shell32(SysWOW64) en-US folder(s), locate the shell32.dll.mui file, r-click and take ownership and then copy it to a safe place for editing. Open ResHack 3.6.0 and drag n drop or search for the shell32.dll.mui file you've just copied and open it.

In the left hand panel expand the "Menu" folder, then scroll down to string #210 and open that.

In the right hand panel you should see as below: Code: 210 MENUEX LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US { POPUP "", 0, MFT_STRING, MFS_ENABLED, 0 { MENUITEM "Cu&t", 24, MFT_STRING, MFS_ENABLED MENUITEM "&Copy", 25, MFT_STRING, MFS_ENABLED MENUITEM "&Paste", 26, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED MENUITEM "Create &Shortcut", 16, MFT_STRING, MFS_ENABLED MENUITEM "&Delete", 17, MFT_STRING, MFS_ENABLED MENUITEM "Rena&me", 18, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED } } All you need to do is replace that table with this: Code: 210 MENUEX LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US { POPUP "", 0, MFT_STRING, MFS_ENABLED, 0 { MENUITEM "Cu&t", 24, MFT_STRING, MFS_ENABLED MENUITEM "&Copy", 25, MFT_STRING, MFS_ENABLED MENUITEM "&Paste", 26, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED MENUITEM "Rena&me", 18, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED MENUITEM "Create &Shortcut", 16, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED MENUITEM "&Delete", 17, MFT_STRING, MFS_ENABLED MENUITEM "", 65535, MFT_SEPARATOR, MFS_ENABLED } } Above the window press Compile Script. Then GoTo the Menu bar, press File, press Save. Your modified file will be automagically backed up with _original added into the file name.

Now to swap them over! GoTo the original location(s). Rename the original files by adding say, old to the end of the file name. Copy and paste your (correct, 32 or 64) modified files into the en-US folder(s), when done, re-boot.

And that's all there is to it, (he says! )

Here is a link to a pair of modified SP1 compliant Shell32.dll.mui files for those who want to skip the fun of modifying your own files! The only change being this modification.



I really don't get this!

If a computer can do anything it should be able to find files.

Today I needed to find a file that I did for my niece a year ago.
I don't remember what I named it or where I saved it.

After trying a few things I decided to narrow it down by just getting a list of the Indesign files so I could go through the list.

The extension for InDesign is .indd

Since I'm in the graphic design business I have a lot of them but the really old stuff is on my external drive so looking through the ones from the last couple of years isn't too bad.

The problem is that when I run a search for .indd or *.indd Windows search comes up and says "No Items Match Your Search".

How can that be, I'm looking at a whole bunch of them on the same drive I am searching on right in front of me.

Why doesn't Microsoft fix this, I was hoping that it would be better after Service Pack 1, they must know this is a problem?

To be truthful I do think it is a little better, but that may just be my imagination.

In Windows XP I could type in something like this and it would find every InDesign file on my computer.

I hope that in Windows 8 they will at least come up with a search engine that really works.

Actually this is the biggest flaw in Windows 7 for me, I have found the same thing when searching for .avi files etc.

It just seems that nothing is more basic to an operating system the the search function.
You have to get that right!



OK, on the positive side, this prompted me to look for another alternative.

I had another search engine installed before my recent re-install but I hadn't put it back in since then.

I found this simple little search engine app that is so fast I can hardly believe it.

Not sure if it's the answer to everything but it found a list of all my .indd files in about 1 second. so I tried with .avi zap there they are.

Next I tried .jpg, 18,680 files in one second.

There are some drawbacks from a practical stand point, it does what it says it searches everything.

It always searches all 3 or my internal hard drives, the only reason it stops there is because all 4 of my external drives are turned off.

As far as I can see you can't tell it to search only one drive or folder.
But it you want to search you whole computer then this really works, I found my nieces file in a few seconds too, by typing in things I thought would be in the title until it popped up.

Here's the link...

Hi guys!

I can see that it's a more or less common problem, that some nvidia driver won't install when running Windows 7.

Im currently tryin to solve the following problem on my cousins pc:
He want win 7, but when I tried to install it for him, it goes wrong.

What happens is that the install says that it makes the final configurations, and then it skips right to a black screen with a white blinking underscore. It never gets further than that. When restarting, win 7 install can't get done, because of some error.

I looked it up, and it all seems to have something to do with the default microsoft win 7 drivers for the nvidia graphics-card. The one win 7 installs simply don't work, and the entire win 7 installation cannot complete because of this.

They way to replace the drivers is to restart, press f8 to start in safe mode. When it's done, an error appears claiming that safe mode cannot be used. When this prompt appears, I can press SHIFT+F10 to open a command prompt. There I write compmgmt.msc to start the device manager. And there I can replace the driver with some working ones from nvidia.

My problem now is that I have downloaded alot of versions from nividia for the GeForce 9800 GX2 for win 7 64-bit. I run the setupfile, to extract the drivers to a usbdrive. I then access the usb drive to replace the driver, following the method described above. But windows 7 just keep claiming that no proper driver is located in the folder.

So now I have come down to this:
Either the nvidia driver is not uninstalled properly for manual install, when I just double-clicked the downloaded file, and transferred the content to the usb-drive.
OR I havent found the right driver yet.

Any suggestions?

Saw a lot of these threads..

Basically Win 7 doesn't detect my ATI graphics card when I go to device manager and instead uses 'standard VGA graphics adapter'.If I try to install ATI drivers through Catalyst Instal Manager, I dont even get an option to instal the actual driver like this


However, Everest does recognize my graphics card which is Radeon HD 4670 correctly


I did manage to "force" instal drivers by using 'have disk' method and navigating to the folder where ATI driver was downloaded, but I can't get CCC to work and I still get those 'jitters' while dragging windows around etc.


I am having an issue with a fresh install of Windows 7 Ultimate. I have videos that will not work in Windows Media Center but will play fine in Windows Media Player. I have downloaded codecs, reinstalled drivers, etc but I am still getting one of 2 errors:

When I try to play a movie directly from Windows Media Center, it says:

"Video playback is not currently allowed. This is often due to incorrect drivers for your graphics card, because the card has less than 64MB of memory, or because the card is not DirectX 9 compatible"

When I got to the folder the video file is in and right click and tell it to OPEN WITH WMC it says:

"Files needed to display video are not installed or are not working correctly. Restart Windows Media Center or restart the computer."

I have tried everything I know but I can't seem to find the issue. This seems to be a problem that a lot of people are having, according to my searches but no one really had a fix. Any help would be greatly appreciated. My card is an ATI Radeon with 256mb so it's certainly not under 64MB required for WMC.

I recently recovered my data from a biohd-8 error. Can someone please tell me which files can I copy back to a hard drive in order for my system to start again and make it useable again. I do not know if any of the files were damaged in the recovery process.

1) If I am able to restart my system by copying these files, will I need to re-activate Windows 7 again?
2) Would I copy the files to the root of the hard drive?
3) I also have the system restore disks that I made a while back, can I use these to install the files into a new hard drive and will windows 7 work?

The files that I recovered are in the following format below: Thank you in advance.

Recovered Folder files:
Intel Multimedia Files
Program Files
Program Files (x86)
Program Data
System Volume Information

Prepare for a massive Wall of Text:

Over the last few weeks, this computer has become more and more problematic. Just to get it out of the way, I can, with 99.9% certainty, rule out viruses or malware, as I'm extremely careful and use Malwarebytes, AVG, and Firefox with Noscript. My computer has been virus-free for years. Every scan (the above two, Spybot, Avira, Ad-Aware, Bazooka, HijackThis - all scans have always been clean for years). Keep in mind that this computer was functioning flawlessly up until this week. This hardware setup is from 2008 and I am using the same Windows 7 disc that I installed on it three years ago. This is the second format and re-installation since I built the computer. No problems the last time, which was about a year ago.

About a week ago, I started getting random squeaks and buzzes out of my speakers - especially when a progress bar is moving in a browser. I figured this was a power issue. Three days ago, my Windows volume control stopped responding. I'd click the icon in the taskbar, and it would take a good minute or two before it would show up. Then I wake up a few days ago, and the computer is frozen and the speakers are making some freaky, possessed R2-D2-esque beep/squeak/buzz noises - almost like the on-board sound card is experiencing some power issues. Also, for the last few days, when Windows would start, it wouldn't be able to recognize my USB wireless adapter. I'd disable and enable it, and I'd get a "failed to connect to network" error upon enabling it. "Diagnosing" it would fail a few times, then succeed temporarily, and then it would disappear again, then magically the adapter would fix itself and automatically connect to my network about 10-15 minutes later. None of these problems were happening a week ago. It was running perfectly then. No hardware changes. No software changes.

Then two days ago, I was about to go to bed and told the computer to go into Sleep mode. The screen went blank and I figured it was just shutting down some processes and preparing to sleep. However, I came back an hour later, and it was still on, so I turned it off manually and went to sleep. I woke up the next morning, turned it on, and it got to the Windows 7 logo loading screen, then suddenly a Blue Screen of Death appeared for a fraction of a second and the computer rebooted. It was stuck in a BSoD loop for a good 20 restarts so I selected the "System Repair Menu" option from the "Windows did not start correctly" prompt. None of the options helped or worked correctly. I couldn't perform a system restore, as it didn't detect any installed copies of Windows. I ran the "Automatic Repair" program from that menu a few times, but it eventually gave me a "Windows could not be automatically repaired" message.

The slow stream of problems seemed to have escalated to what I'd call a catastrophic failure.

The BSoD loops continued for a while, so I decided I'd see if I could boot from the Windows 7 disk. I made sure that the DVD drive was the top boot priority and opened the boot menu and told it to boot from the CD. However, it somehow went to boot from the hard drive anyway. So I restarted it again, and it magically made it to Windows. I took the opportunity to browse to the DVD drive and manually run the Windows installer, and after I did this and it told me to reboot, the installer finally ran and took an eternity to actually get started. However, the installation failed somehow. I ran it again, formatted the C: drive, and tried reinstalling it again, and it successfully installed this time.

So I got into my formatted and fresh Windows 7 installation, and the volume control is working just fine, but I'm still having the network issue - including the fact that it fails after startup for 10-15 minutes then magically repairs itself and automatically connects to my network. Once I had connectivity, I activated Windows, thinking that the problems I'm about to describe are because perhaps Microsoft limits your performance before you activate; this is not the case.

What is truly frustrating, however, is the fact that this fresh Windows installation is mind-numbingly slow, both hardware and network wise. The online Google Chrome installer was hung (not frozen, but not progressing) for a good hour before I finally closed it. Windows Update has been stuck at 23% and I can no longer open the Windows Update window from the taskbar icon (if I end the process in Task Manager, it just re-opens a few minutes later and hangs at 23% for hours, though the process isn't frozen as I can still get the percent completed pop-up to appear when I hover my mouse over the icon). Because Windows Update isn't working, I can't see if any updates or Service Packs might fix this. Internet Explorer (nothing else to use, since installers are all hanging) takes about two minutes to open, and freezes for a good minute when I try to open a website or the options (or change tabs in the options window). Even Task Manager is slow and takes about 30 seconds to close a process. It takes 10 seconds or so to open a folder in Windows Explorer, and doing things like opening the "Save" window in Notepad, or pressing "Save" are now taking seconds when they were previously instantaneous.

The nForce 650i Chipset driver installation took about an hour as each driver installation hung (but didn't freeze) at 30% for 20 minutes or so, but finally finished - but no effect on the slowness. I can't really test the effects of other drivers at the moment, as their installers are just too slow and unresponsive to ever finish.

I downloaded the Google Chrome Standalone Offline Installer, and clicked the icon. "ChromeStandaloneInstaller.exe" appeared in Task Manager, and five minutes later "GoogleUpdater.exe" finally showed up. However, no actually installer visibly opened. Fifteen minutes later, an installer finally appeared, hanging (but not freezing) for another fifteen minutes. It just now finally finished and Chrome was successfully installed. Contrary to what you'd expect from Chrome, it's taking several minutes to start, and is running about as slowly as IE, with the welcome page taking a minute to appear the first time, and then not opening at all, and browsing is very slow as well, both software- and latency-wise. It seems as if both my computer AND my computer's internet access are suddenly slow after this reinstall (but the internet is just as fast as usual on my other computers, so I know it's an issue with my computer rather than my ISP or router - the other computers are crappy 98/XP rigs but all running faster and getting faster internet than my 2008 powerhouse is running right now). It took about five minutes for the registration page for these forums to finally load, and the page (but not the browser) actually froze several times for 30-60 seconds during the loading. Other websites are behaving similarly.

This thing could smoothly run Crysis at high settings before, and now after a format and fresh installation of Windows, it can barely open a web browser. The CPU usage in Task Manager is stuck at 0% (not sure if that's right), and the Physical Memory usage is hovering around 25%. The Hard Disk activity is reported as 100% in the Resource Monitor, and the HD light on the front of my case is constantly on no matter what I'm doing. I just tried to close Resource Manager, and it hung for about 30 seconds before closing.

I finally got Defragmenter to run after several attempts, and an analysis of the C: drive says that it's 1% fragmented. I don't know if this is considered high. However, as I did a "Slow" format of the C: drive before reinstalling the OS, I assume any existing fragmentation was made irrelevant since all data was erased. Could a 1% fragmented C: drive cause this slowness?

This is probably irrelevant, but I had a 5.5 Windows Experience Score before the re-install, and now it is a 1.2. I'm not sure how it would drop so much with no hardware changes. All four sticks of RAM are recognized by Windows, so I don't think any of them have failed.

Windows 7 Home Premium 64-bit
Intel Q6600
ASUS P5N-e SLI motherboard
4GB of RAM (whichever type the P5N-e uses... can't look it up at the moment)
nVidia GeForce GT240 (1 GB)
Two 250GB Western Digital hard drives
Rosewill 700W PSU
Lite-On DVD drive
12Mb Comcast Cable Internet

None of it is, or ever was, overclocked in any way.

I have no idea what is wrong with this thing, and it's really getting frustrating, especially since I was laid off and can't afford to replace any of the hardware right now if this is a hardware failure. I'm considering trying another format and reinstall, though I'm not expecting different results.

I'm sure I left something out despite this being an excessively long and wordy post, so if you need more information, please let me know. I hope this is the best possible forum for this issue, because my computer and internet are now too slow to find any other forums. Took a total of 20 minutes just to get registered and to this "New Thread" page.

OK, I upgraded from home to windows ultimate and it totally destroyed my laptop computer. I don't have any drivers it doesn't read that I have wireless internet. Ethernet cable works but Ive been downloading drivers for my computer and nothing is helping. There is still my old version of windows in a folder Windows.old

Recently I noticed my CPU being pushed to 100% by a trojan (igfxupdate) though not knowing the cause of the usage I simply tried restarting the computer, though when the computer restarted my CPU Meter was gone. I have now completely removed the virus but my CPU Meter never showed up. It isn't in my list of gadgets and it doesn't reappear when I click restore gadgets, however, it seems to have all of it's files (in my windows siderbar folder). So I am at a loss as to how to fix it and I can't simply reinstall it because it comes with windows. I was really a big fan of this gadget and now that it helped me catch this virus I feel naked without it. I know I can download a different CPU Meter but I like the simplicity and reliability of the windows one, so if anyone knows how to fix it or has any ideas for me to try it would be most appreciated.

Thanks and have a good day!

Hey guys.

(Running Windows 7 RC 64-bit)

So after trying just about everything with crappy Linksys products (using a router as an access point (failed), connecting to a range extender via Ethernet (failed when other people connected wirelessly and also had a wierd lag issue)), I caved and bought a WUSB600n Wireless USB-N network adapter.

I made the mistake of trying to use the CD first, which failed miserably.

Next, I downloaded the Vista 64-bit drivers, thinking that maybe they would work. Before I transferred them over to install them, though, I discovered the new Windows 7 drivers and naturally tried them first. When I finally found the "Update Driver" button, I manually updated the driver while my device was plugged in by clicking on the appropriate folder (Win7_64) that contained the drivers I needed. I checked to make sure that my network adapter was indeed version 2 (which it was) and updated.

I watched the computer think.. and think... and think some more about installing the drivers. Finally,

"Windows has encountered an unexpected problem trying to install your driver.

The driver is being used by another process."

Ooooook...... What other process would be using a not-even-installed driver for my network adapter that I had literally just bought today?!

I made sure that no other USB drivers were on there (uninstalled and deleted Belkin USB G+MIMO drivers and software) and tried again. Same error.

I tried the Vista 64-bit. Same error.

Finally, I tried to just use the generic Windows device driver for this and it timed out. I'm currently watching it try to uninstall that driver and I have a hunch that it won't work.

Should I just return this damned thing or is there a workaround?

(SOLVED: see end of this post)

relevant PC info in profile.

well, tons of support sites out there, enver joiend ones cause so many to choose. got a problem though, and i found this is dedicated to win 7, so im hoping this is my best bed.

I installed win 7 x64 today making my PC a triple boot system with XP and vista (never had to go back to XP though.) my pc came with wireless integrated, and it won't work. i'm afraid i may just have to wait till hp releases win 7 drivers.... but i hope some has some idea and cna help.

in the meantime, I connected my PC to my laptop with Vista 32bit home prem, with a crossover Ethernet... yeah, nothing's working. Tried ICS, made sure laptop is allowing shared connection, tried ad-hoc, nothing. They see the network, it would seem they're sharing music, pictures, etc folders, but big red X in middle of network map, no internet connection. Laptop sets up ICS and ad hoc connection properly, apparently, but my PC won't pick up the internet connection. And i don't think it ever saw the ad hoc connection. I've tried everything i could think of, googled endlessly.

tried a linksys wireless adapter too, WUSB11 v 2.4. 802.11b, yeah didn't work, that's from before even vista anyway; shows up as unkown device with exclamation mark in device manager. It MAY have worked from what I see online, but only if Win 7 has been the 32bit. I have another adaptor, a G, but it's much newer. I'll try it though.

Hey, but other than that, Windows 7 runs great!!

so, hopefully at least I can get this PC to used ICS on the laptop, AT LEAST to start off so that I can start working soley in win 7 (As long as nothing improtat) instead having to restart to boot into vista as I did now. but that owuld mean laptop needs to be on when i use win 7, which means extra power, hassle, and the laptop isnt stable and needs a system restore anywy. i'd prefer to get wirelss working, some how. 2 wireless options and a third wired and none work. -.-

last resort, i could technically bring modem and router up here....but that would be amess and hassle with wires, and my brother needs the router for the xbox.

thanks, hope there'll be some replies soon. i'll be checking back a lot.

PS: ADMINS: JUST BECAUSE I PUT TOO MANY TAGS (jsut trying to be helpful, GOSH), my whole message CLEARED. any other person would have LOST their whole message. need to look into that if you can. (luckily, I always highlight ans copy verything before clicking submit, so i didn't lose it.) I forget if one cna do anything about it with the site, but i know one message board added a feature where post-data is saved and shown in a text box when an error occurs.


HP live chat support pulled through for me again. 8)

If anyone has this same computer or suspects they have the same wireless card, get the driver here and run it under Win 7:

If by any chance the link goes down and you need the driver, send me an email. If you're not registered, it's my username at msn.

Page 23 of 40.
Results 441...460 of 789